C语言基础 运算符优先级,C语言入门教程-运算符优先级

运算符优先级

C语言有丰富的运算符。如果不清楚这些运算符的优先级,则在同时使用多个运算符时就容易产生混乱。

x=5+3*6;

上面的表达式中,x被赋值23,而不是48,因为在C中乘除法的优先级高于加减法。

char *a[10];

这里的a是一个指向大小为10的字符数组的指针,还是一个包含10个字符指针的数组呢?答案只有从C的优先级约定中寻找。类似的,在前面我们看到,*p.i= 10;这条语句由于算符优先级错误而不能执行,而必须用(*p).i=10;强制其使用正确的优先级。

下表摘自Kernighan 和 Ritchie合著的《C程序设计语言》,运算符的优先等级从高到低排列。

运算符 结合性

( [ - . 自左向右

! - ++ -{- + * & (类型) sizeof 自右向左

(上行中的 +、-、* 都为单目算符)

* / % 自左向右

+ - 自左向右

<< >> 自左向右

< <= > >= 自左向右

== != 自左向右

& 自左向右

^ 自左向右

| 自左向右

&& 自左向右

|| 自左向右

?: 自左向右

= += -= *= /= %= &= ^= |= <<= >>= 自右向左

, 自左向右

由上表可知,char *a[10];声明了一个包含10个字符指针的数组。还可以知道为什么正确处理表达式(*p).i时括号是必不可少的。通过一定的练习您可以记住表格的大部分内容,但某个被疏忽的优先级错误还是会不时制造一些麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值