c语言操作符总结
- 算术操作符
算术操作符比较简单,有+,-,*,/,%
需要特别注意的是:
1. 取余运算只能作整数取余。3%2
2. 除法运算中,两个整数做除法结果也为整数,如果有一个数是浮点型的,那么结果就为浮点数。
- 移位操作符
移位操作符分为两种左移操作符<< 和右移操作符 >>。
左移操作符 <<移位规则:左边丢弃,右边补0。
右移操作符 >>分为两种:
1) 算术右移:右边丢弃,左边补符号位。
2) 逻辑右移:右边丢弃,左边补0。
具体哪一种看编译器,算术右移用的多一点,比较准确。
- 位操作符
包括 按位与 &,按位或 |,按位异或 ^
- 赋值操作符
这个比较简单,赋值 =
- 复合赋值符
+= -= *= /= %= >>= <<= &= |= =
int a = 1;
int b = a++; printf("%d\n", a); //2 printf("%d\n", b); //1 int b = ++a; printf("%d\n", a); //2 printf("%d\n", b); //2
单目操作符
! 逻辑反
- 负值
+ 正值
& 取地址
sizeof 操作数类型长度
~ 二进制数取反
-- 前置,后置--
++ 前置,后置++
* 解引用操作符/间接访问操作符
(类型) 强制类型转换
int main()
{
int a = 1;
printf("%d\n", !0); //1
printf("%d\n", !2); //0
a = -a;
printf("%d", a); //-1
printf("%p", &a); //a的地址
system("pause");
return 0;
}
int arr[10]={0};
printf(“%d\n”,sizeof(arr)) //40
补充:
1) sizeof(数组名) 数组名表示整个数组,求整个数组的大小。
2) &数组名 表示整个数组,&数组名取的是整个数组的地址。
- 关系操作符
> >= < <= != ==
注意区分赋值=,判断== 的区别!!!
- 逻辑操作符
|| 逻辑或
区分&& 和&, | 和|| : 1 & 2—————> 0
1 && 2—————>1
1 | 2—————> 3
1 || 2—————>1
这里有一道面试题,请看下篇
- 条件操作符
例如寻找两个数之间的较大者
if(a>5) b = 3
else b = -3 等同于 int b= (a>5) ? (3) : (-3);
- 逗号表达式
逗号表达式,从左向右依次计算,整个表达式的结果取决于最后一个表达式的结果。
int a = 1, b = 2;
int c = (a > b, a = b + 10, a, b = a +1); //13
- 下标引用,函数调用,结构成员
. 结构体.成员名
->结构体指针成员名