1.算数操作符
+ - * / %
- / 操作符的两个操作数必须都为整数,执行整数除法.如果有浮点数就执行浮点数除法.
printf("%d\n",8/5.0 //错误
printf("%f\n",8/5.0 //正确
- % 操作符的两个操作数必须为整数,返回的是整除之后的余数。
2.移位操作符
<< 左移操作符 ——左边抛弃,右边补0
>>右移操作符,分为两种:
- 逻辑移位:左边补0,右边抛弃
- 算术移位:左边用原该值的符号位填充,右边抛弃
注:不能移动负数位
3.位操作符
& 按位与——都为1才为1
| 按位或——有一个1就为1
^ 按位亦或——相异为1,相同为0
4.复合操作符
+= -= *= /= %= >>= <<= &= |=
int a=1;
a=a+1;
a+=1;
5.单目
操作符
! 逻辑反操作
~ 对一个数的二进制按位取反
(类型) 强制类型转换
* 间接访问操作符(解引用操作符)
- &取地址
int arr[10]={1,2,3,4,5,6,7,8,9,0}
printf("%p\n",arr); //首元素的地址
printf("%p\n",*arr); //首元素
printf("%p\n",&arr); //数组地址,不是首元素地址
- sizeof 操作符的类型长度
int a=10; char c='4'; printf("%d\n",sizeof(a)); //4 printf("%d\n",sizeof(int)); //4 printf("%d\n",sizeof(c)); //1
char arr1[10]={0}; int arr2[10]={0}; printf("%d\n",sizeof(arr1)); //10 printf("%d\n",sizeof(arr2)); //40 //sizeof(数组名)——数组名表示整个数组 //&数组名——数组名表示整个数组 //除此之外所有的数组名都是首元素的地址
6.关系操作符
> >= < <= != ==(用于测试相等)
7.逻辑操作符
&& 逻辑与——两个都为真才为1
|| 逻辑或——两个都为假才为0
int i=0,a=0,b=2,c=3,d=4;
i=a++ && ++b && d++;
printf("a=%d\n b=%d\n c=%d\n d=%d\n",a,b,c,d);
//1,2,3,4
a=1 //2,3,3,5