C语言操作符基础

mac2026-05-18  6

操作符的分类:

算术操作符 移位操作符 位操作符 赋值操作符 逻辑操作符 单目操作符 关系操作符 条件操作符 逗号表达式 下标引用 函数调用和结构成员

算术操作符

+-*/% 取余数

移位操作符

<< 左移 >> 右移

左移操作符 移位规则: 左边抛弃,右边补0。

右移操作符 移位规则: 右移运算分两种: 1.算术右移:左边用该值的符号位填充。 2.逻辑右移:左边用0补充,右边丢弃。

int a=3; int b=5; a>>1; 011 010 a=2; b<<1; 101 1010 b=10;

位操作符

& 按位与 ^ 按位异或 | 按位或

注:他们的操作数必须是整数。(位操作符的应用见我的第二篇博客)

赋值操作符 复合赋值操作符

= 赋值 += a=a+1可以写为a+=1 -= a=a-1可以写为a-=1 *= a=a*1可以写为a*=1 /= a=a/1可以写为a/=1 ^= a=a^1可以写为a^=1 &= a=a&1可以写为a&=1 %= a=a%1可以写为a%=1 >>= a=a>>1可以写为a>>1 <<= a=a<<1可以写为a<<1

单目操作符:

! 逻辑取反操作 +-~ 按位取反 (类型) 强制类型转换 (应用见指针进阶博客) sizeof 操作数类型长度 * 间接访问(解引用操作符) (应用见指针博客) & 取地址 ++ 前置++,后置++ 前置++,++,后使用 后置++,先使用,++ -- 前置--,后置-- 前置--,--,后使用 后置--,先使用,--

关系操作符:

== 用于测试(判断)等于 != 用于测试(判断)不等于 <= 小于等于 >= 大于等于 < 大于 > 小于

逻辑操作符:

&& 逻辑与 || 逻辑或

条件表达式:

exp1?exp2:exp3 exp1,exp2...expN

逗号表达式:从左向右依次执行,整个表达式的结果是最后一个表达式的结果

下标引用操作符:

[] arr[10]

函数调用操作符:

() Add(10,20);

访问结构体的成员

. ->

整型提升 (隐式发生):两个char类型的变量相加,需要提升成一个普通整型的字节长度。

char a = 3; char b = 127; 00000011 a 01111111 b 00000000000000000000000000000011 补充符号位 00000000000000000000000001111111 补充符号位 00000000000000000000000010000010 a+b 10000010 c 11111111111111111111111110000010 补充符号位 11111111111111111111111100000001 c反码 10000000000000000000000011111110 c原码 char c = a + b; printf("%d\n",c);

输出结果为-126,而不是130。 算术转换(隐式转换):如果一个int类型的变量和一个double类型的变量进行计算,则 先将int 类型转换为double类型(向上转换)。

操作符的属性: 1.操作符的优先级 2.操作府的结合性 3.是否控制求值顺序

结合性:

L-R(从左向右)R-L(从右向左)( )++[ ]- -.+=->-=++*=- -/=+%=->>=*<<=/&%*>>sizeof<<()>&=<^=>=|=<====/!=/&/&&/^/| |/,/
最新回复(0)