知识点(1):
i++和++i的区别:
++i是先加后赋值
i++是先赋值后加
++i 和I++都是分两步完成的
因为++i是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i==b;即++i是一个左值;i++的后面一步是自增,不是左值。
知识点(2):
&(按位与操作):对应位如果全为1,运算结果为1,否则为0
11—>1
10—>0
01—>0
00—>0
|(按位或操作):对应位如果全是0,结果为0,否则为1
11—>1
10—>1
01—>1
00—>0
^(异或):相同为0 ,相异为1,abb=a
11,00—>0
10,01—>1
~(按位取反操作):原来是1变成0,原来是0变成1,这个运算符是单目运算符,只有一个操作数
对应位:上下对齐的位
0000 1010
0001 0100
1、求运行结果:
#include<stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a;//a=6;c=6
b = ++c, c++, ++a, a++;//c=7;b=7; b=7,c=8; a=7;b=7; b=7;a=8;
b += a++ + c;//a=9;c=8;b=7+9+8=23
printf("a = %d b = %d c = %d\n:", a, b, c);
return 0;
}
运行结果:a = 9 b = 23 c = 8
2、不允许创建临时变量,交换两个整数的内容
^(异或):相同为0 ,相异为1,a^b^b=a
11,00—>0
10,01—>1