电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

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

来源:-- 作者:-- 浏览:478

标签:

摘要: 运算符优先级C语言有丰富的运算符。如果不清楚这些运算符的优先级,则在同时使用多个运算符时就容易产生混乱。 x=5+3*6; 上面的表达式中,x被赋值23,而不是48,因为在C中乘除法的优先级高于加减法。 char *a[10]; 这里的a是一个指向大小为10的字符数组的指针,还是一个包含10个字符指针的数组呢?答案只有从C的优先级约定中寻找。类似的,在前面我们看到,*p.i= 10;这条语句由于算

运算符优先级

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时括号是必不可少的。通过一定的练习您可以记住表格的大部分内容,但某个被疏忽的优先级错误还是会不时制造一些麻烦。

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67