算术操作符
% 这是取模操作符,取模得到的是余数,例子:
int main()
{
int a = 5 % 2;
printf("%d\n", a);
return 0;
}
这里是5模2的余数,余1,所以打印的结果是1。
移位操作符,移的是二进制位,<< 左移操作符,>>右移操作符。
例如:
int main()
{
int a=1;
int b=a<<1;//左移操作符
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
这里打印的输出结果是 a=1,b=2,因为输入的a=1,当左移一位的时候,就变成了2,这里写出1的二进制的最后4位介绍,原来是0001,左移之后就变成了0010.
位操作符,这里的位还是二进制位,&,按位与(并), |,按位或, ^,按位异或。按位与:两个都是1,结果是1,有一个不是1,结果是0。按位或,只要有一个1,结果就是1。按位异或,对应的二进制位相同为0,不相同则为1。例如:
int main()
{
int a = 3;//011
int b = 5;//101
int c = a & b;
int c = a | b;
int c = a ^ b;
return 0;
}
先看第一个c ,a按位与b,根据上面说的,所以结果是001,输出为1,第二个c,根据上面说的,结果是111,输出为7,第三个c,根据上面说的,结果是110,输出是6。
赋值操作符,如下:
int main()
{
int a = 10;
a = 20;//a的赋值方式 可简化成下面这种
a = a + 10;
a += 10;
a = a - 20;
a -= 20;
a = a & 2;
a &= 2;
复合赋值符 += -= /= *= %= <<= >>= &= |= ^=
return 0;
}
进入程序,a=20,的意思是:将20赋值给a,判断等于用==(两个等号)。代码中写了赋值方式,a=a+10;将a+10的值赋给a。剩下的意思也是一样的。
操作符:单目操作符,还有双目,三目操作符
int main()
{
int a = 10;
int b = 20;
a + b;
int a = 0;
printf("%d\n", a);
printf("%d\n", !a);
int a = -2;//-就是负号
int b = -a;
int c = +3;//+通常正号会省略 &取地址符
return 0;
}
例如a+b,+就是一个操作符,是双目操作符,两边的a,b,就是操作数,int a=10;就是单目操作符,因为只有a一个操作数。
!表示的意思是逻辑反操作,就像打印!a,a原来是0,逻辑反操作后打印结果就变成了1。
sizeof 算操作数的类型长度(以字节为单位)。常用来求数组的元素个数。例如:
int arr[10] = { 0 };
int sz = 0;
sz = sizeof(arr) / sizeof(arr[0]);
printf(“sz=%d\n”,sz);
结果是10,求得的元素个数为10
sizeof求int a=10;的大小
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof a);
这里算的都是4,因为是32位平台的编译器,算的时候操作符a可以不加括号,但是类型(int),一定要加括号,不然算出来结果是有问题的。
int arr[10] = { 0 };
printf("%d\n", sizeof(arr));
这里的数组有10个元素,都是整型,所以打印的sizeof就是40,4*10=40。因为每个整型占四个字节。
浅谈操作符这里就就讲完了