四、运算符,表达式,控制流语句
1.运算符
分类:
算术运算符:+ - * / % ++ --
关系运算符:> < >= <= == !=
逻辑运算符:&& || !
位运算符: & | ~ ^ << >>
赋值运算符: =
顺序运算符: ,
三目运算符: a>b?a:b;
复合运算符:+= -= *= /= %= &= |= ~= <<= >>=
①. 算术运算符:
1)+ : int a; a=a+10; 2)- : int a; a=a-10; 3)* : int a; a=a*10; 4)/ : int a=10; int b=a/3; b=3; //'/'功能为取整; 5)% : int a=10; int b=a%3; b=1; //'/'功能为取余数; 6)++ : int a=10; int b=a++; b=10,a=11 //'++'自增表示自身+1; int a=10; int b=++a; b=11,a=11 7)-- : int a=10; int b=a; b=10,a=9 //'--'自减表示自身-1; int a=10; int b=--a; b=9,a=9 注意:(1)自加运算符写在变量后面,先赋值,再自加; (2)自加运算符写在变量前面,先自加,再赋值; (3)常量不可自加(常量不可被赋值) !!! 如:10++;--》这是错误的用法。
②. 关系运算符
1) > : int a=10,b=9; 则a>b为真。 2) < : int a=10,b=9; 则b<a为真。 3) >=: int a=10,b=10; 则a>=b为真 4) <=: int a=10,b=10; 则a<=b为真 5) ==: int a=10,b=10; 则a==b为真 //'=='判断两百年是否相等,不要和'='混淆; 6) !=: int a=10,b=9; 则b!=a为真。 // '!='判断两边是否不相等。
③. 逻辑运算符
&& : 逻辑与,同时满足两条表达式才为真! 例如:想要判断一个数是否在5~10之间 int a; if(5<=a<=10) printf("..."); //不能这么写,这是错的!!! int a; if(a>=5 && a<=10) printf("..."); //正确写法!!! || : 逻辑或,只要有一条表达式为真就是真,只要有一个表达式为真,就不会继续对后面的表达式进行 判断! 例如: int a=4; if(a<=5 || a>=10) printf("..."); //4<=5为真,不会继续进行 a>=10的判断语句。 ! : 取非--》真假互换 例如: int a=4; if(a<5)为真; if!(a<5)为假。
④. 位运算符(运算时要将数据转化成二进制)
unsigned char a =0x3c; -->0011 1100 unsigned char b =0xd5; -->1101 0101 1) &:位与--》两个为真才为真 a&b--> 0011 1100 & 1101 0101 ==0001 0100; 2) |:位或--》一个为真就为真 a&b--> 0011 1100 | 1101 0101 ==1111 1101; 3) ~:取反--》 0变1,1变0 ~a--> ~0011 1100 ==1100 0011; 4) ^:异或--》相同为0,不同为1 a^b--> 0011 1100 ^ 1101 0101 ==1110 1001; 5)<<:左移--》把数据整体左移,高位溢出舍去,低位补0 a<<4 --> 0011 1100<<4 == 1100 0000; 6)>>:右移--》把数据整体右移,低位溢出舍去,高位补0 a>>4 --> 0011 1100>>4 == 0000 0011;
⑤. 赋值运算符
=: int a=10; --》把10转化为二进制存储到a这块内存中。
⑥. 三目运算符
原型:a>b?a:b int a=10,b=20,c //功能是对a,b进行比较,如果a>b, c=a>b?a:b //输出a,否则输出b。
⑦. 复合运算符:+= -= *= /= %= &= |= ~= <<= >>=
例如: int a=100; a+=5; --》a=a+5; //直接从a这块内存块中进行运算,效率更高; a==105
2.表达式
int a;
a>10, a<10, a==10, a !=10;
1, 2,;
if(a>10){};
if(1*10){};
a+2, a=100...等都是表达式。
表达式只有两种值,真和假,非0则为真!!!
3.控制流语句
①. 概念:C语言里面实现循环逻辑控制的语句
②. 分类:
1)循环语句: for、while、do-while 2)分支语句: if-else if-else 、switch 3)跳转语句: goto 标签
③. 循环语句
1)while: 模型: while(表达式) --》当表达式为真时,就会执行括号内的代码块。 { //注意while(表达式)后面不要加分号‘;’ 代码块; } 2)do-while: 模型: do { --》先执行一次循环,再判断表达式, 代码块; 如果表达式为真,会继续执行循环。 }while(表达式); --》这里的分号必须要加!!! 3)for: 模型: for(初始化代码块;表达式;更新代码块) { 代码块; } 注意: 初始化代码块在整个for循环里面执行一次; 表达式每次执行循环之前都会判断一次表达式,表达式为真才会执行一次循环; 更新代码块是在每次循环执行结束后,都会执行一次。 4)死循环:一直执行,不会结束。 例如: while(1) 或者 for(;;) { { ...; ...; } } 5)return、break、continue的作用 return:结束当前的函数,返回一个对应类型的返回值; 如果在主函数里面,表示结束主函数也就会结束整个程序的运行。 break:跳出离他最近的一个循环,可以跳出switch语句。 continue:结束此次循环,继续执行下一次循环。
④. 分支语句
1) if---else if---else if(表达式1) //当表达式1为真时,会执行代码块1 { //代码块1 } else if(表达式2) //当表达式1为假时,才会判断表达式2,如果表达式2为真时,会执行 代码块2 { //代码块2 } else //当前面所有的表达式为假,才会执行代码块3 { //代码块3 } 2) switch switch(n) //n 只能写整型、字符类型、枚举(绝对不能写浮点型) { case 1: //代码块1 break; case 2: //代码块2 break; case 3:· //代码块3 break; default: //代码块5 break; }
⑤. 跳转语句
goto 标签: 直接跳转到该标签处 例如: int i=1; flag: printf("%d\n", i); i++; if(i == 10) return 0; goto flag;