说起操作符大家都不陌生,从我们最初的 + - c * / 加减乘除,到更加深奥的操作符,而今天我要有完整的系统来理清楚C语言的操作符到底有什么,和它们相关的用法,话不多说,直接走进今天的主题----C语言的操作符。
一:算数运算符
+ - * / %(取模)
这里不细讲加减乘,加减乘和数学是一样的,这里只谈 / %。
二:移位操作符
<< (左移操作符) >> (右移操作符)---移动是二进制哟(移的是补码)(在32比特位下移动)
有些编译器不支持移动负数,移动后不改变自身
三:位操作符 (计算的是二进制)
& (相同为 1 即为 1 ,有 0 则为 0 )
| (有 1 则为 1 ,两个相同时则为0)
^ (相同为 0 ,相异为 1 )
① & | ^ 计算
#include<stdio.h> int main() { int a = 1; int b = 2; int x1, x2, x3; // a 的二进制 00000000 00000000 00000000 00000001 // b 的二进制 00000000 00000000 00000000 00000010 x1 = a & b; // a 的二进制 00000000 00000000 00000000 00000001 // b 的二进制 00000000 00000000 00000000 00000010 // x1 的二进制 00000000 00000000 00000000 00000000 x2 = a | b; // a 的二进制 00000000 00000000 00000000 00000001 // b 的二进制 00000000 00000000 00000000 00000010 // x2 的二进制 00000000 00000000 00000000 00000011 x3 = a ^ b; // a 的二进制 00000000 00000000 00000000 00000001 // b 的二进制 00000000 00000000 00000000 00000010 // x3 的二进制 00000000 00000000 00000000 00000011 //x1 = 0,x2 = 3,x3 = 3 printf("x1 = %d,x2 = %d,x3 = %d\n", x1, x2, x3); return 0; }
②不能创建变量(第三个变量),实现两个数的交换
#include<stdio.h> //方法一: //int main() //{ // int a = 1; // int b = 2; // a = a + b; // b = a - b; // a = a - b; // printf("a = %d,b = %d\n", a, b); // return 0; //} //当数字很大时就合适了 //方法二: int main() { int a = 1; int b = 2; a = a ^ b; b = a ^ b; //看成 b = ( a ^ b ) ^ b,这里 b 和 b就可以消除 a = a ^ b; //这里其实就变成 a = ( a ^ b ) ^ a,这里 a 和 a就可以消除 printf("a = %d,b = %d\n", a, b); return 0; }
四:赋值操作符( = )
+= -= *= /= %= >>= <<= &= |= ^=(复合赋值符)
#include<stdio.h> int main() { float weight = 55.5f;//加 f 的目的使区分double double high = 1.78; int age = 18; return 0; } //记住 C语言的 = 和 == 是两码事 // a = 1 赋值运算符 // a == 1 是判断 a 是否等于1
五:单目操作符
六:关系操作符
> >= < <= != ==
这里记住 a = 1 赋值运算符 a == 1 是判断 a 是否等于1
七:逻辑操作符
&& (并且的意思) || (或者的意思)
#include<stdio.h> //int main() //{ // int a = 0; // int b = 0; // if (a == 0 && b == 0) // { // printf("hehe\n"); // } // else // { // printf("haha\n"); // } // return 0; //} //打印出hehe int main() { int a = 0; int b = 0; if (a == 0 || b == 1) { printf("hehe\n"); } else { printf("haha\n"); } return 0; } //打印出hehe
八:条件操作符
( 语句 1 ? (语句 2 :语句 3))如果语句1为真就执行语句2,否则执行语句3
#include<stdio.h> int main() { int a = 0; int b = 1; int c = a > b ? a : b; //如果 a 大于 b 就把 a 的值赋给 c,否则就把 b 的赋给 c printf("%d\n", c); return 0; } //打印出:1
九:逗号表达式
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
#include<stdio.h> int main() { int a = 1; int b = 2; int c = (a > b, a = b + 10, a, b = a + 1); //这里 a > b 没有什么关系,a = b + 10 = 2 + 10 = 12 //这里 a 没有什么关系,b = a + 1 = 12 + 1 //最后 c = b printf("%d\n", c);//打印出:13 return 0; }
十:下标引用(已讲),函数调用(已讲)和结构体成员
下标引用:[ ]
函数调用:函数名();
结构体成员: . ->(这里不细讲,后面会详细介绍)
关于操作符的优先级图片
不知不觉就到了尾声呢,咱们第七章的知识点就到这里了啦,作为小白的我,可能写的不是很好,不对的地方还请大佬大佬指点指点。