C语言操作符总结
对C语言里的操作符进行一个总结
操作符列表:
- 算术操作符
- 移位操作符
- 位操作符
- 赋值操作符
- 单目操作符
- 关系操作符
- 逻辑操作符
- 条件操作符
- 逗号操作符
- 下标引用·函数调用·结构成员
算术操作符
+ - */ %
‘ / ’号操作符:
1.作用于整型量时,会自动消除四舍五入的量,如:111/10=11,个位上的1被四舍五入消除了。
2.当两边的操作数都是整数时,执行整数除法;两边是浮点数,执行浮点数除法
‘ % ’号操作符:
1.操作数必须为整型,返回的是两个操作数的余数,如:101%10=1
用例:
‘ / ’ 和‘ % ’组合使用的技巧,前者可以消除一个整型数的最后一位,后者可以通过“余进制数”取出整型数的最后一位,通过循环可以将一个整数的每一位都拿到。
实例:
查找水仙花数(自幂数)
移位操作符
<< 左移位符
>> 右移位符
左移位符
最左边的一位被丢弃,右边补0
int n = 10;
n在内存中的变化
000000000000000000001010
n << 1;
000000000000000000010100
右移位符
右移位分为两种:
1:逻辑右移
左边用0补充,右边的丢弃。
2:算术右移
左边用该值的符号位代替,右边的丢弃。
注意事项
不能对负数移位,这个是不被标准定义的。
单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置-
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型
sizeof 和 strlen的区别
1.sizeof是操作符 strlen是库函数
2.strlen求有效字符长度,不算 \0
sizeof算的是变量(类型)的大小
sizeof使用技巧
int a=1;
//可以sizeof(a)
//也可以sizeof(int)
int arr[10]={0};
//可以sizeof(arr)
//也可以sizeof(int [10])
关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
注意 == 和 = 前者是判等后者是赋值 意义不同
逻辑操作符
逻辑操作符:
&& 逻辑与
|| 逻辑或
条件操作符
X1 ? X2 : X3
例子
min = (a < b) ? a : b //将A和B中较小的那个赋给min
逗号表达式
A , B , C , D ;
从左向右依次执行,最终结果为最后一个表达式的结果
int main(){
int a = 1;
int b= 2;
int c= (a < b , a > b);
int d =(a < b , b = a + b);
}
//C的值为a > b的结果 即 1
//d的值为b = a + b的结果 即 3
下标引用、函数调用、结构成员
1.下标引用操作符
//操作数:数组名 + 值
array [ 8 ] = 1;
// [] 的两个操作数就是array和8
2.函数调用操作符
//"()" 操作数:函数名+传的参数
void swap(&a,&b){}
//swap 和 ab都是操作数
3.访问一个结构的成员
结构体.成员名
-> 结构体指针->成员名
如:ListNode->cur;