常见的操作符
1、算术操作符
+(加号) 加法运算 (3+3)
–(减号) 减法运算 (3–1) 负 (–1)
*(星号) 乘法运算 (3*3)
/(正斜线) 除法运算 (3/3)
%(百分号) 求余运算10%3=1 (10/3=3·······1)
^(乘方) 乘幂运算 (3^2)
! (阶乘) 连续乘法 (3!=3*2*1=6)
|X| x为任何数 (绝对值) 求正 (|1|)
2、移位操作符
>>右移操作符
<<左移操作符
注意:移位操作符移的是2进制位
比如以下代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 2;
int b = a << 1;
printf("%d", b);
return 0;
//移位操作符移的是二进制位
}
运行结果如下,先将2转化为二进制数后将其向左移一位后得到的新的二进制数,再将得到的二进制数转化为十进制数得到结果。
3、位操作符
& 按位与
| 按位或
^ 按位异或
4、赋值操作符
+= 加赋值
-= 减赋值
*= 乘赋值
/= 除赋值
%= 求余赋值
&= 按位与赋值
| = 按位或赋值
^= 按位异或赋值
<<= 左移位赋值
>>= 右移位赋值
5、单目操作符
delete
sizeof
++
--
~——位非,返回数字的非。
其中,++,--和~操作符应该注意
(1)++操作符
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1 = 10;
int num2 = ++num1;//前置++,先++,后使用
printf("%d\n", num2);
printf("%d\n", num1);
int num3 = 20;
int num4 = num3++;//后置++,先使用,后++
printf("%d\n", num4);
printf("%d\n", num3);
return 0;
}
运行结果如下,如果++前置,应该先++,后使用
如果++后置,应该先使用,后++;对于--同理。
(2)~操作符
~操作符是将目标数字的所有二进制数字的1全部换为0,将0全部换为1。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 0;
printf("%d\n", ~a);
return 0;
//~按位取反,数字在内存中以补码形式存在,输出到电脑上就是真值,所以将0的32为二进制先全部取反后以补码形式存储
//输出时转化为真值。
}
输出结果为
6、关系操作符
<小于
>大于
<=小于等于
>=大于等于
!=不等于
7、逻辑操作符
&&与操作符
||或操作符
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 5;
int b = 6;
int c = a && b;
printf("%d\n", c);//非零就为真
int a1 = 6;
int b1 = 0;
int c1 = a1 && b1;
printf("%d\n", c1);
return 0;
}
上述&&运算运行结果如下,注意在C语言中非零便是真,是零才为假。
||运算同理
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 5;
int b = 6;
int c = a || b;
printf("%d\n", c);//非零就为真
int a1 = 0;
int b1 = 0;
int c1 = a1 || b1;
printf("%d\n", c1);
return 0;
}
运行结果如下
8、三目操作符
exp1?exp2:exp3
此语句意思是若exp1语句成立,语句exp2计算,表达式结果为exp2的结果;
若exp1语句不成立,语句exp3计算,表达式结果为exp3的结果。
如下代码段
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 3;
int b = 0;
int max = 0;
max = a > b ? a : b;
printf("%d\n", max);
}
上述代码运行结果如下
9、逗号操作符
(exp1,exp2,exp3,......)
逗号表达式,是从左向右依次计算的
整个式子的结果是最后一个表达式的结果
如下代码段
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 2;
int b = 2;
int c = 2;
//逗号表达式,是从左向右依次计算的
//整个式子的结果是最后一个表达式的结果
int d = (a = a - 8, b = b + 2, c = c + 5);
printf("%d\n", d);
return 0;
}
上述代码运行结果如下