操作符
=================目录=====================
=====================================
一、操作符
1.算术操作符 (+ - * / %)
- %操作符左右都必须为整数,返回相除之后的余数,+ - * /操作符左右两边默认为int类型,左右出现一个double即为double
2.移位操作符 (左移<<右移>>)
- 在被操作数没被赋值的情况下,自身的值不会变化
左移:
- 左边抛弃,右边补0
左移一位:
int num 10;
num<<1
右移:
- 逻辑右移(不考虑正负号):左边补0,右边舍弃
- 算术右移(考虑正负号):左边补符号位,右边舍弃
右移一位:
int num 10;
num>>1
3.位操作符
- 按位与:将数化为二进制,再逐位进行与运算
a & b;
- 按位或:将数化为二进制,再逐位进行或运算
a | b;
- 按位异或:将数化为二进制,再逐位进行异或运算
a ^ b;
位操作符应用举例:
#include <stdio.h>
int main()
{
int num1 = 0;
int num2 = 1;
printf("%d\n",num1 & num2);
printf("%d\n",num1 | num2);
printf("%d\n",num1^ num2);
return 0;
}
其中,
num1 = 00
num2 = 01
0&0 = 0
0&1 = 0
所以num1 & num2 = 00
4.复合操作符
a += b
=>
a = a + b
5.单目操作符
sizeof应用举例
#include <stdio.h>
int main() {
char arr[] = "abcedes";
printf("%d", sizeof(arr));
return 0;
}
6.关系操作符
用于判断语句:
if(a > b){
a++;
}
7.逻辑操作符
用于循环或者判断语句:
if(a > b && a < c){
a++;
}
8.条件操作符
如果exp1成立则运行exp2,返回exp2结果
如果exp1不成立则运行exp3,返回exp3结果
exp1 ? exp2 : exp3
9.逗号表达式
用逗号隔开的表达式,从左到右依次执行,结果为最后一个逗号的表达式的结果
#include <stdio.h>
int main() {
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);
printf("%d", c);
}
二、操作符的运算优先级