C语言操作符可谓五花八门,但是只要理清之间的功能,就可以运用自如啦!
操作符和分类
1.算术操作符
2.移位操作符
3.位操作符
4.赋值操作符
5.单目操作符
6.关系操作符
7.逻辑操作符
8.条件操作符
算数操作符:+ - * / %
注意:%操作符的操作数必须为整数,返回值为整除之后的余数。
移位操作符:
<< 左移操作符
>> 右移操作符
左移操作符 移位规则:左边抛弃,右边补0;
右移操作符 移位规则:逻辑移位 左边用0填充,右边丢弃;算数移位 左边用原值的符号位填充,右边丢弃(注意:一般的编译器中多采用算术右移)。
举个左移操作符的例子:
int num = 10 ;
num在内存中的二进制为: 00000000000000000000000000001010
num左移一位产生的结果: 00000000000000000000000000010100
但是,num在没被赋值的情况下,自身值不会改变。
举个右移操作符的例子(算数右移)
int num = -1 ;
num在内存中以补码形式存储: 11111111111111111111111111111111
右移一位,由于是负数,即为: 11111111111111111111111111111111
注意:对于移位运算符,不能移动负数位,这个是错误的!
位操作符
&//按位与
| //按位或
^ //按位异或
注意:它们的操作数必须为整数
#include <stdio.h>
int main()
{
int num1 = 1 ; //00000000000000000000000000000001
int num2 = 2 ; // 00000000000000000000000000000010
printf("num1 & num2 = %d\n", num1 & num2) ; // 00000000000000000000000000000000
printf("num1 | num2 = %d\n", num1 | num2) ; // 00000000000000000000000000000011
printf("num1 ^ num2 = %d\n", num1 ^ num2) ; // 00000000000000000000000000000011
return 0 ;
}
赋值操作符
int salary = 8000 ; //薪资
salary = 12000 ;
还可以连续赋值:
int a = 10 ;
int x = 0 ;
int y = 20 ;
a = x = y + 1 ;
但我们并不推荐这种写法。我们不妨这样写:
x = y + 1 ;
a = x ;
这样的可读性就更高,作为一名初学者,一定要养成良好的编程习惯。
复合赋值符
1.+=
2.-=
3.*=
4./=
5.%=
6.>>=
7.<<=
8.&=
9.|=
10.^=
例如:
int x = 10 ;
x = x + 10 ;
x += 10 ; //复合赋值,这样写会更加简洁明了。
单目操作符
1.! //非
2.- //负值
3.+ //正值
4.& //取地址
5.sizeof //操作数的类型长度(以字节为单位)
6.~ //对一个数二进制按位取反
7.-- //前置、后置–
8.++ //前置、后置++
9.* //解引用操作符
10.(类型) //强制类型转换
#include <stdio.h>
int main()
{
int a = - 10 ;
int* p = NULL ;
printf("!2 = %d\n" , !2) ;
printf("!0 = %d\n" ,!0) ;
a = -a ;
p = &a ;
printf("sizeof(a) = %d\n" , sizeof(a)) ;
printf("sizeof(int) = %d\n" , sizeof(int)) ;
printf("sizeof a = %d\n" , sizeof a);
return 0 ;
}
关系操作符
1.>
2.>=
3.<=
4.!= //用于测试“不相等”
5.== //用于测试“相等”
注意:后两种操作符在进行字符串比较时 绝对不能使用 !!!
逻辑操作符
1.&& //逻辑与
2.|| //逻辑或
区分“逻辑与”和“按位与”以及“逻辑或”和“按位或”:
1 & 2 -----> 0
1 && 2 ----> 1
1 | 2 -----> 3
1 || 2 ----> 1
条件操作符
exp1 ? exp2 : exp3
(我会这样记它:exp1对吗?对的话就走exp2,错的话就走exp3)
if (a > 5)
b = 3 ;
else
b = - 3 ;
转换成条件表达式,为:
b = a > 5 ? 3 : -3 ;
关于C语言里的操作符先简单总结这么多,我们要在编程中灵活运用,才能使代码的可读性更高。