C语言运算符的优先级表与结合性要点
2009-11-05 23:02
295 查看
[align=center]表达式[/align] | [align=center]优先级[/align] |
[align=left]()(小括号) [](数组下标) .(结构成员) ->(指针型结构成员)[/align] | [align=left]↑最高[/align] |
[align=left]!(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变量地址) [/align] | [align=left] │[/align] |
[align=left]*(指针所指内容) type(函数说明) sizeof(长度计算) [/align] | [align=left]│[/align] |
[align=left]*(乘) /(除) %(取模) [/align] | [align=left]│[/align] |
[align=left]+(加) -(减) [/align] | [align=left]│[/align] |
[align=left]<<(位左移) >>(位右移) [/align] | [align=left]│[/align] |
[align=left]<(小于) <=(小于等于) >(大于) >=(大于等于) [/align] | [align=left]│[/align] |
[align=left]==(等于) !=(不等于) [/align] | [align=left]│[/align] |
[align=left]&(位与) [/align] | [align=left]│[/align] |
[align=left]^(位异或) [/align] | [align=left]│[/align] |
[align=left]|(位或) [/align] | [align=left]│[/align] |
[align=left]&&(逻辑与) [/align] | [align=left]│[/align] |
[align=left]||(逻辑或) [/align] | [align=left]│[/align] |
[align=left]?:(?表达式) [/align] | [align=left]│[/align] |
[align=left]= += -=(联合操作) [/align] | [align=left]│[/align] |
[align=left],(逗号运算符) [/align] | [align=left]│最低[/align] |
1. .的优先级高于*。->操作符用于消除这个问题。
*p.f变成了*(p.f)而不是(*p).f
2. []高于*,于是int *ap[]中的ap变成了元素为int指针的数组。
3. 函数()高于*,因此,int *fp()不再是函数指针了,而是一个函数,返回int *。
4. 逗号运算符在所有运算符中优先级最低,所以,i = 1, 2就成了(i = 1), 2而不是i = (1, 2)。
逗号运算符的值是最右边操作数的值,逗号运算符结合性从左至右,因此又称为顺序求值运算符。
5. 在表达式中如果有布尔操作、算术运算、位操作等混合计算,始终应该在适当的地方加上括号。
x = f() + g() * h(); 乘法先于加法执行,但是g()和h()的调用可能以任何顺序出现。同样,f()可能在乘法之前调用,也可能在乘法之后调用。
优先级和结合性规则告诉你哪些符号组成一个意群,大部分这样的意群内部如何进行计算的次序是未定义的。
有些操作符,如&&和||等,其操作数的计算顺序是确定的,它们使用短路原则。
C语言中记住两个优先级就够了:乘法和除法先于加法和减法,在涉及其他操作符时一律加上括号。
结合性用于在几个操作符具有相同的优先级时确定先执行哪一个。
每个操作符拥有某一级别的优先级,同时也拥有左结合性或者右结合性。
所有的赋值符(包括复合赋值符)都具有右结合性(从右到左执行),因此可以使用连等的赋值形式。
唯一的三目运算符?:也是具有右结合性的。
所有优先级相同的操作符,它们的结合性也相同,这是必须如此的。
在函数调用中,各个参数的计算顺序是不确定的。
相关文章推荐
- C语言运算符优先级与结合性
- C语言运算符优先级及结合性
- C语言运算符优先级与结合性
- C语言运算符的优先级和结合性一览表
- 说说C语言运算符的“优先级”与“结合性”
- C语言运算符的优先级和结合性
- C语言运算符的优先级和结合性实例详解
- c语言运算符优先级,结合性(左/右结合详解)
- C语言运算符优先级和结合性
- C语言运算符优先级和结合性预览表
- C语言运算符优先级与结合性
- c语言运算符的优先级和结合性
- c语言运算符优先级,结合性(左/右结合详解)
- 说说C语言运算符的“优先级”与“结合性”
- C语言运算符、优先级、结合性
- C语言运算符的优先级与结合性
- c语言运算符优先级,结合性(左/右结合详解)
- c语言运算符优先级,结合性(左/右结合详解)
- c语言运算符优先级,结合性(左/右结合详解)
- 说说C语言运算符的“优先级”与“结合性”