C语言中的运算符总结解读

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言中的运算符总结

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

1.算术操作符:+ - * / %

1除了% 操作符之外,其他的几个操作符均可以作用于整数和浮点数。

2对于/ 操作符,如果两个操作数都为整数,执行整数除法;而只要有浮点数执行的就是浮点数除法。

3% 操作符的两个操作数必须为整数,返回的是整除之后的余数。

2.移位操作符: << 左移操作符和 >> 右移操作符(针对二进制位、是对整数的操作

1左移操作符移位规则:左边丢弃、右边补0。

2右移操作符移位规则:(1算术移位:左边补符号位,右边丢弃。

(2逻辑移位:左边补0,右边丢弃。

注:对于移位运算符,不能移动负数位,这个是标准未定义的。

3.位操作符:& 按位与 | 按位或 ^ 按位异或(操作数都必须是整数,是针对二进制数的操作

4.赋值操作符:= 可以重新为变量赋值(赋值操作符是可以连续使用的,从右向左执行,不建议使用。

5.复合赋值符:+= = *= /= %= >>= <<= &= |= ^=

6.单目操作符:! 逻辑反操作(真---假

- 负值+ 正值

& 取地址从内存中取地址,不能从寄存器register 中取址。

sizeof 操作数的类型长度(以字节为单位

~ 一个数的二进制按位取反

-- 前置、后置-- ++ 前置、后置++ (1前置++和--:先自增后使用,表达式的值是自增之后的值。

先自减后使用,表达式的值是自减之后的值。

(2后置++和--:先使用再自加。

先使用再自减。

* 间接访问操作符(解引用操作符

(类型强制类型转换

7.关系操作符:> >= < <= != 不相等 == 相等

注:== 相等 = 赋值,二者易混淆,需注意。

8.逻辑操作符:&& 逻辑与|| 逻辑或

注:逻辑与、逻辑或是判断真假的,按位与、按位或是对二进制数进行操作的。

对逻辑与操作,只要有一个为假,便不必再进行后边的计算;对逻辑或操作,只要有一个为真,便不必再进行后边的操作。

9.条件操作符(三目操作符:exp1 ? exp2 : exp3

先计算表达式1 的值,如果表达式1 为真,整个表达式的值就是表达式 2 的值,如果为假,整个表达式的值就是表达式 3 的值。

10.逗号表达式:exp1, exp2, exp3, …expN

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

11.下标引用、函数调用和结构成员

1[ ] 操作数:一个数组名+ 一个索引值

2.( 函数调用操作符

接受一个或多个操作数:第一个操作数是函数名,剩余的操作数是传递给函数的参数。

3访问一个结构的成员:. 结构体. 成员名

-> 结构体指针-> 成员名

12.表达式求值

表达式求值的顺序一部分是由操作符的优先级和结合性决定。

有些表达式的操作数在求值的过程中需要转换为其他类型。

1隐式类型转换:C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换

称为整型提升。

2算术转换:如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的类型转换为另一个操作数的类型,否则操作就无法进行。

寻常算术转换:long double

double

float

unsigned long int

long int

unsigned int

int

如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运算。(算术转换要合理

3复杂表达式的求值三个影响的因素:(1操作符的优先级(2操作符的结合性(3是否控制求值顺序。

两个相邻的操作符执行顺序取决于他们的优先级,如果两者的优先级相同,取决于他们的结合性。

相关文档
最新文档