算术操作符
算术操作符有+,-,*,/,%.
依次是加减乘除和取余,但是我们使用的时候,特别要注意的除法的使用。
#include<stdio.h>
int main()
{
double a = 5 / 2;
printf("%lf\n", a);
return 0;
}
例如上面代码,我们计算的是5/2,那么我们输出的结果应该是2.5,但是当我们输出后,我们就会发现我们的结果为2,少了小数的部分,这是因为我们5/2两边数字都是int,所以我们输出的时候我们的结果就默认为int型,假如我们想要输出为2.5,我们可以让5改为5.0或者将2改为2.0(两个都改也是可以的),那么我们的数据就改为浮点型了,我们就可以输出2.5也会就默认为浮点型了。
#include<stdio.h>
int main()
{
double a = 5.0 / 2.0;
printf("%lf\n", a);
return 0;
}
在我们%(取余)符号的两边我们必须为整数假如我们5.0%2,这样就是错误的,我们取余的计算方法就是找到最大公约数,然后将去公约的部分就是我们想要得到的结果(也可以这样解释:两个数相除后剩下的余数就是我们的结果)。
#include<stdio.h>
int main()
{
int a = 5%2;
printf("%d\n", a);
return 0;
}
因为我们5与2的公约数为2,我们减去公约的部分也就是5-2*2=1,所以我们输出的结果也就是1。
#include<stdio.h>
int main()
{
int a = -5%2;
printf("%d\n", a);
return 0;
}
负数的取余也很简单,我们先计算出两个数字都是正数的取余值,然后加上负号就是我们负数取余的结果了。上面我们知道5%2=1,所以-5%2=-1。
移位操作符
我们的移位操作符有<<和>>,这里的移位也就是我们的位置发生改变,我们<<就表示我们位置向左边,同理>>就表示我们的位置向右移动,我们知道计算机识别的语句是二进制的,我们这里所说的移动也就是计算机二进制位置的移动。
#include<stdio.h>
int main()
{
int a = 2;
int b = 2 << 2;
printf("%d\n", b);
return 0;
}
我们知道int的字节数为4,一个字节=8个比特,所以我们的2在二进制里面的表示也就是:
00000000,00000000,00000000,00000010,
我们<<2就是10的位置向左移动了2个位置(空出来的位置补为0)所以我们结果为:
00000000,00000000,00000000,00001000,
所以我们的结果也就是8。
位操作符
位操作符 | 具体意思 |
x&y | 按位与 |
x||y | 按位或 |
x^y | 按位异或 |
我们假设两个int a,int b:
a: 00000000,00000000,00000000,00000101
b: 00000000,00000000,00000000,00010110
a&b 00000000,00000000,00000000,00000100
a|b 00000000,00000000,00000000,00010111
a^b 00000000,00000000,00000000,00010011
a&b的意思是找a与b共同1的位置,其它位置均为0。
a|b的意思是找a与b共同0的位置,其它位置均为1。
a^b的意思是a与b的操作位的数字不同则为1,相同则为0。