上一页 下一个

C语言编程基础

运算符优先级

C包含许多操作符,由于操作符优先级的工作方式,多个操作符之间的交互可能会令人困惑。

x = 5 + 3 * 6;

广告

X接收到的值是23,而不是48,因为在C语言中乘法和除法的优先级高于加法和减法。

char * [10];

一个单个指针指向一个包含10个字符的数组,还是一个包含10个指针指向字符的数组?除非你知道C语言中的优先级约定,否则没有办法找到答案。类似地,在E.11中,我们看到由于优先级语句,例如* p。I = 10;不要工作。相反,表单(* p)我= 10;必须用于强制正确优先级。

下表来自C语言,由Kernighan和Ritchie编写,显示了c语言的18新利最新登入优先级层次结构。

运算符结合性([-。从左到右!- ++ -{- + * & ( 铸造)sizeof右到左(在上面的线,+,-,*是一元形式)* / %左到右+ -左到右< < > >从左到右  < <= > >= 左到右= = ! =从左到右和从左到右^左到右|左到右& &左到右| |左到右?:从左到右  = += -= *= /= %= &= ^= |= <<= >>= 右到左,从左到右

通过这个表格,你可以看到char * [10];是一个包含10个指向字符的指针的数组。您还可以看到为什么括号是必需的,如果(* p)我就是要正确处理。经过一些练习后,您将记住这个表的大部分内容,但有时会出现一些问题,因为您遇到了一个微妙的优先级问题。

特色
Baidu