介绍几种操作符:
+ 、- 、* 、/、%算数操作符
在C语言中加减乘除和取余操作符均为单目操作符,需要注意的是:+、-、*、/计算可以是整形也可以是浮点型。但是,%只能是整形计算。
移位操作符
左移操作符(<<)
左移操作符规则:左边多余的抛弃,右边空余的补0。
例:
根据整数在内存中的存储可得,8左移3位后变成64。
用代码实现并验证:
#include <stdio.h>
int main()
{
int a = 8;
printf("%d\n", (a << 3));
return 0;
}
运行结果如图:
右移操作符(>>)
右移操作符分为两种:一是逻辑右移,另一是算术右移。
逻辑右移
逻辑右移操作符规则:逻辑右移是无符号数右移,右边多余的抛弃,左边用0补齐。
例:
根据整数在内存中的存储规则可得8逻辑右移2位可得到2。
用代码实现并验证:
#include <stdio.h>
int main()
{
unsigned int a = 8;
printf("%d\n", (a >>2));
return 0;
}
运行结果如图:
算术右移
算术右移操作符规则:算术右移是有符号数右移,右边多余的抛弃,左边用该数值的符号位补齐。
例:
根据整数在内存中的存储规则可得-8算术右移2位可得到-2。
用代码实现并验证:
#include <stdio.h>
int main()
{
int a = -8;
printf("%d\n", (a >>2));
return 0;
}
运行结果如图:
注意:对于移位运算符,不要移动负数位,这个是标准未定义的。
位操作符
位操作符有:按位与(&)、按位或(|)、按位异或(^)
按位与操作符(&)
按位与的规则:同为1才为1,有0则为0。
例:
根据整数在内存中的存储规则可得2&3可得到2。
用代码实现并验证:
#include <stdio.h>
int main()
{
int a = 2;
int b = 3;
printf("%d\n", (a & b));
return 0;
}
运行结果如图:
按位或操作符(|)
按位或操作符的规则:有1则为1,全0则为0。
例:
根据整数在内存中的存储规则可得2|3可得到3。
用代码实现并验证:
#include <stdio.h>
int main()
{
int a = 2;
int b = 3;
printf("%d\n", (a | b));
return 0;
}
运行结果如图:
按位异或操作符(^)
按位异或操作符规则:相同则为0,相异则为1。
例:
根据整数在内存中的存储规则可得2^3可得到1。
用代码实现并验证:
#include <stdio.h>
int main()
{
int a = 2;
int b = 3;
printf("%d\n", (a ^ b));
return 0;
}
运行结果如图:
逗号表达式
例:
注意:逗号表达式括号里的表达式需要逐一执行,执行到最后一个表达式所求出来的值即为最终的值。
用代码验证:
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);
printf("%d\n", c);
return 0;
}
运行结果如图: