c语言深度剖析-第8部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
花括号的作用是什么呢?我们平时写函数,if、while、for、switch语句等都用到了它,
但有时又省略掉了它。简单来说花括号的作用就是打包。你想想以前用花括号是不是为了
把一些语句或代码打个包包起来,使之形成一个整体,并与外界绝缘。这样理解的话,上
面的问题就不是问题了。
2。7,++、操作符
这绝对是一对让人头疼的兄弟。先来点简单的:
inti=3;
(++i)+(++i)+(++i);
表达式的值为多少?15吗?16吗?18吗?其实对于这种情况,C语言标准并没有作出
规定。有点编译器计算出来为18,因为i经过3次自加后变为6,然后3个6相加得18;
而有的编译器计算出来为16(比如VisualC++6。0),先计算前两个i的和,这时候i自加两
次,2个i的和为10,然后再加上第三次自加的i得16。其实这些没有必要辩论,用到哪个
编译器写句代码测试就行了。但不会计算出15的结果来的。
++、作为前缀,我们知道是先自加或自减,然后再做别的运算;但是作为后缀时,到
底什么时候自加、自减?这是很多初学者迷糊的地方。假设i=0,看例子:
A);j=(i++;i++;i++);
B);for(i=0;i=0且r=0且b》0时,保证|r|=0。后
面部分的保证与性质2或性质3比较起来,限制性要弱得多。
通过上面的解释,你是否能准确算出2/(…2)和2%(…2)的值呢?
2。9,运算符的优先级
2。9。1;运算符的优先级表
C语言的符号众多,由这些符号又组合成了各种各样的运算符。既然是运算符就一定有
其特定的优先级,下表就是C语言运算符的优先级表:
优先级运算符名称或含义使用形式结合方向说明
1
''数组下标数组名'常量表达式'
左到右
()圆括号
(表达式)/函数名(形
参表)
。成员选择(对象)对象。成员名
…》成员选择(指针)对象指针…》成员名
2
…负号运算符…表达式
右到左
单目运算符
(类型)强制类型转换(数据类型)表达式
++自增运算符++变量名/变量名++单目运算符
自减运算符变量名/变量名单目运算符
*取值运算符*指针变量单目运算符
&取地址运算符&变量名单目运算符
!逻辑非运算符!表达式单目运算符
~按位取反运算符~表达式单目运算符
sizeof长度运算符sizeof(表达式)
3
/除表达式/表达式
左到右
双目运算符
*乘表达式*表达式双目运算符
%余数(取模)
整型表达式/整型表
达式
双目运算符
4
+加表达式+表达式
左到右
双目运算符
…减表达式…表达式双目运算符
5
表达式双目运算符
6
》大于表达式》表达式
左到右
双目运算符
》=大于等于表达式》=表达式双目运算符