运算符
数学运算符
包括 +、-、*(在此处是乘的意思,同时它还是解引用运算符,在指针部分会有详解)、/、%、++、- -。
注意:/ 运算当除数和被除数都是整数时,运算结果也是整数;如果不能整除,那么就直接丢掉小数部分,只保留整数部分,这跟将小数赋值给整数类型是一个道理。
除数和被除数中有一个是小数,那么运算结果也是小数,并且是 double 类型的小数。
除数不可为 0 。
其中+ - * /与平时的数学运算无异。%的意思是取模,即取余数,如
int a = 10;
int b = a % 3;
printf("%d\n", b);
输出结果为1。
++、- - 被称为自增、自减运算符。要注意:在使用时,若为前缀则先自增/减再使用,若为后缀则先使用再自增/减。
int c1 = 10, c2 = 20, c3 = 30, c4 = 40;
printf("origin:%d, %d, %d, %d\n", c1, c2, c3, c4);
int c1_1 = c1++, c2_1 = ++c2, c3_1 = c3--, c4_1 = --c4;
printf("after:%d, %d, %d, %d\n", c1, c2, c3, c4);
printf("%d, %d, %d, %d\n", c1_1, c2_1, c3_1, c4_1);
输出结果:
origin:10, 20, 30, 40
after:11, 21, 29, 39
10, 21, 30, 39
可见,无论是前自增减还是后自增减,都会对原来的变量产生影响,而只有前自增减会影响赋值符左的变量,后自增减不影响。
另外,让变量自增减还有另外一种方法:
int i = 1;
i++;
i--;
++i;
--i;
就我目前的水平,自增减符在前和在后都一样,运行结果也都一样。姑且先这么记。
位运算符
包括 &(按位与)、|(按位或) 、^(按位异或)、~(按位取反)。
其中,&、|、^是双目运算符,~是单目运算符。位运算符对数字的二进制按位进行逻辑运算,结果为数字。
与逻辑:
输入 | 输入 | 结果 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
或逻辑:
输入 | 输入 | 结果 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
异或逻辑:
输入 | 输入 | 结果 |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
非逻辑:
输入 | 结果 |
---|---|
1 | 0 |
0 |