【黄色手套22】2话:运算符和表达式

目录

基本算术运算符:

自增自减运算符:

强制类型转换运算符:

不同类型数据间的混合运算:

隐式类型转换:

逻辑运算符:

条件运算符:

赋值运算符:

位运算符:

        左移运算符<<     右移运算符>>

        按位非~   

        按位或 |     

        按位与 &       

        按位异或 ^     

C语言运算符:

        ■. 逗号, 

        ■. 逻辑值:

        ■. C语句

        ■. 源文件:

c语句的"分类"

基本算术运算符:

+ 正号
- 负号
* 乘号
/ 除号
% 取余号
+ 加号
- 减号

■.   整数除整数结果为整数,舍去小数。

      有小数参与则结果为小数

■.   求余运算符%只能对整数求余,不能对小数求余。

___________

自增自减运算符:

++,--

前缀和后缀使用:++i  先增后用        --i  先减后用

                             i++  先用后增        i--  先用后减

■ .   ++和--运算符只能用于变量,不能用于常量或表达式。

       ( 报错:左值必须为可修改的变量)

■.   为避免二义性(文法含有二义性的语句,即语言语法说明不完善),                                                可以加一些“不必要的括号”。(例如:i+++j写成(i++)+j)

_______________

强制类型转换运算符:

一般格式:(类型名)(表达式)

用于不同类型数据之间的相互转换。

例如   int a =1,b =2,t =0;

           t= (double)a/b;

           printf("%f\n",t);     //0.000000    

■.   强制类型转换可能会导致结果精度的丢失:小数转整数,小数位数据没。

■.   强制类型转换后的值只是临时值,并不影响对数据(变量)本身。

 例如

float x = 2.6,y=2.4;
printf("%d %d\n",(int)x,(int)y); //2 2
printf("%f %f\n",x,y);           //2.600000 2.400000 

 ____________________

不同类型数据间的混合运算:

整型、实型(浮点型)、字符型数据可进行混合运算

隐式类型转换:

不同类型的数据做运算时,计算机编译系统会自动转换类型.

转换规则:%c --> %d --> %f --> %lf

                  低精度类型向高精度类型转换数据

■.   字符则以ASCII码值参与运算

逻辑运算符:

                        用于连接多个条件,并判断运算符两边表达式的逻辑值。

                        双目运算符:&&、||,输出逻辑值。

条件运算符:

        用于判断条件,并根据不同的条件来执行不同的代码段。

        基本格式:(表达式1)(表达式2)(表达式3)

        C语言中唯一一个三目运算符

        运算规则:先判断表达式1的逻辑值,若真则执行表达2;若假则执行表达式3。

■. 操作数

        是运算符操作的实体,是表达式的一个组成部分,

        它规定了运算指令中进行数值运算的量。

■. 运算符的目数

        运算符在运算时所需要的操作数的数目。

        运算符根据操作数的不同,一般分为:单目运算符、双目运算符、三目运算符。

           例如-1、+100、a++、!0 等这些在表达式中的运算符此时为单目运算符

           例如1+2、5*6、1&&2 等为双目运算符

■. 运算符的优先级

        (广义)单目运算符 > 双目运算符 > 三目运算符。

         算术 > 关系 > 逻辑 > 条件 > 赋值 > 逗号运算符


关系运算符:< 、> 、=


赋值运算符:

        赋值运算符:   (用于给变量赋值)

        复合赋值运算符:+= 、-= 、*= 、/= 、%=

      

位运算符:

对数据的二进制补码形式进行相关运算,且运算对象只能是整型数据 (的补码形式)。

补充:正数------原码反码补码相同

                补码:其反码+1

           负数-----反码:其数值位取反

                 补码:其反码+1

          

左移运算符 <<     右移运算符 >>

两个都是单目运算符

■.   基本格式:整数<> n

	printf("%d\n",2<<1);  //4
	printf("%d\n",3<<2);  //12

■.   将一个整数的二进制补码左移/右移n个二进制位

■.   相当于乘以 / 除以2的n次方(左移/右移)

  

按位非~   

按位取反,1变0,0变1

■.  ~正数:正数补码(原码) -> 按位取非(相应的负数补码形式) -> 负数反码形式 -> 负数原码形式

     ~负数:负数补码 -> 按位取非(相应的正数补码形式) -> 正数原码形式(正数原码反码补码相同)

           数的补码形式->取非->补码->原码

按位或 |     

同位置有1为1,否则为0

例如 1|2 为 3 :

                           1  0000 0001

                           2  0000 0010

                        1|2   0000 0011

                          

按位与 &       

同位置有0为0,否则为1

例如 3&4 为 0:   

                              3   0000 0011

                              4   0000 0100

                           3|4    0000 0000

                                

按位异或 ^      

同位置相同为0,不同为1

例如 5^6 为 3

                             5  0000 0101

                             6  0000 0110

                         5^6   0000 0011

               

C语言运算符——总结

算术运算符

+ 、-  、* 、/                             

关系运算符

<  ==>= <= !=

(运算结果为逻辑值:真1假0)

逻辑运算符

逻辑与 &&逻辑或 ||逻辑非 !

(运算结果为逻辑值:真1假0)

位运算符

左移 <<

右移  >>

按位非 ~       (取反)

按位或 |        (有1为1)

按位与  &     (有0为0)

按位异或 ^  (相同为0)

赋值运算符 =  、+=  、-=  、*=  、/=  、%=
条件运算符 (表达式1)?(表达式2):(表达式3)
逗号运算符

(起到分隔的作用)

强制运算符 (数据类型)(表达式)
求字节运算符 sizeof();
指针运算符
下标运算符

成员引用符

其他运算符 例如函数运算符() 、复合语句{}  、语句结束符;  等

■. 逗号

    int x=1 , y=2 , z=3;          //使用逗号当用于连续定义多个变量时分隔变量名

    x+=10 , y-=3 , z=2+y;      //使用逗号分隔多个表达式//x=11,y=-1,z=1;

    printf("%d\t%d\t%d\t"  ,x , y , z);        //使用逗号分隔多个函数参数

■.  逻辑值

     有两个,“逻辑真”和“逻辑假”。

     非0为真,一般用1表示真;0为假

■.   关系运算符常与逻辑运算符配合使用

       例如 a>b&&b>c

■.   注意逻辑与 && 和逻辑或 || 的短路计算

      逻辑与 && 的短路计算:前表达式若为假,不执行后表达式。

      逻辑或 || 的短路计算:前表达式若为真,不执行后表达式。

      短路计算会影响计算结果

      

■. C语句

一个c语言程序由若干个源程序文件组成,

一个源文件由若干个函数和预处理指令以及全局变量声明部分组成。

       例如:一个函数有数据声明部分和执行语句,其都是由语句组成的;语句的作用是向计算机系统发出操作指令,要求执行相应的操作。

一个c语句经过编译后产生若干个机器指令。

c程序的基本组成单位是函数,函数又由一条或多条c语句构成。

■. 源文件

    用汇编语言或高级语言写出的代码保存为文件后的结果。

   它是相对于目标文件和可执行文件而言的。

   .obj目标文件是指源文件经过编译程序产生的能被操作系统识别的二进制文件

   .exe可执行文件是指能被操作系统加载执行的文件

   

赋值语句:左值必须为可修改的变量,右值为任意的符合规范且赋值有效的表达式。

                   例如   a=(b=1)*(c=2);  //b=1; c=2; a=2;

变量赋初值:在变量定义时对变量进行赋值操作就叫做变量赋初值,也称为变量的初始化赋值。

                      例如   int a = 1;

输入输出语句:常用的c语句

—————————————

c语句的"分类"

表达式语句

        由一个表达式加一个分号;构成                          

控制语句

        由流程控制表达式组成的语句,用于完成一定的流程控制功能

函数调用语句

        调用函数

空语句

        仅由分号组成

复合语句

        在c语言中用花括号 {} 把一些语句括起来,形成一条复合语句(又称语句块)

        复合语句使用时注意变量的作用域范围,

        其常用于选择分支结构和循环结构等控制语句中,

        其目的是让控制语句可以控制多条语句,达到我们想要的效果。

控制结构语句

        if()...else...(选择结构)

        for(;;)...(循环结构)

        while()...(循环结构)

        do...while()...(循环结构)

        break;(结束整个循环)

        continue;(结束本次循环,执行下次循环)

        switch;(多分支选择结构)

        return;(函数返回语句)

        goto;(跳转语句)//在结构化程序中最好不用goto语句

 空语句

        不执行任何语句

        但出于编程语言的规范性,其十分重要。

 ———————————————#

你可能感兴趣的:(1:C语言,c语言)