《[免费下载 c语言深度解剖[1]》

下载本书

添加书签

[免费下载 c语言深度解剖[1]- 第11部分


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!


&=按位与后赋值变量& 
=表达式 
^=按位异或后赋值变量^ 
=表达式 
|=按位或后赋值变量| 
=表达式 
15 
;逗号运算符表达式;表达式;…左到右
从左向右顺
序运算

注:同一优先级的运算符,运算次序由结合方向所决定。

上表不容易记住。其实也用不着死记,用得多,看得多自然就记得了。也有人说不用记
这些东西,只要记住乘除法的优先级比加减法高就行了,别的地方一律加上括号。这在你自
己写代码的时候,确实可以,但如果是你去阅读和理解别人的代码呢?别人不一定都加上括
号了吧?所以,记住这个表,我个人认为还是很有必要的。

2。9。2,一些容易出错的优先级问题
上表中,优先级同为 
1的几种运算符如果同时出现,那怎么确定表达式的优先级呢?这
是很多初学者迷糊的地方。下表就整理了这些容易出错的情况:

优先级问题表达式经常误认为的结果实际结果
。的优先级高于*
…》操作符用于消除这
个问题 
*p。fp所指对象的字段 
f 
(*p)。f
对 
p取 
f偏移,作为
指针,然后进行解除
引用操作。*(p。f)
''高于* 
int 
*ap''ap是个指向 
int数组
的指针 
int 
(*ap)'' 
ap是个元素为 
int
指针的数组 
int 
*(ap'')
函数()高于* 
int 
*fp()fp是个函数指针,所
指函数返回 
int。 
int 
(*fp)()
fp是个函数,返回 
int 
* 
int 
*(fp()) 
和! 
=高于位操作 
(val 
& 
mask 
!= 
0) 
(val 
& 
mask)!= 
0 
val 
& 
(mask 
!= 
0) 
和! 
=高于赋值符 
c 
= 
getchar() 
!= 
EOF 
(c 
= 
getchar()) 
!= 
EOF 
c 
= 
(getchar() 
!= 
EOF)
算术运算符高于位移
运算符 
msb 
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架