九味书屋 > 激情辣文电子书 > [免费下载 c语言深度解剖[1] >

第13部分

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

小说: [免费下载 c语言深度解剖[1] 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



上面的例子很简单,那我们把括号去掉看看: 
inti 
= 
3; 
++i+++i+++i;


天啦!这到底是什么东西?好,我们先看看这个:a+++b和下面哪个表达式想当: 
A);a+++b; 
B);a+++b;

2。7。2,贪心法 
C语言有这样一个规则:每一个符号应该包含尽可能多的字符。也就是说,编译器将程
序分解成符号的方法是,从左到右一个一个字符地读入,如果该字符可能组成一个符号,
那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组
成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串
已不再可能组成一个有意义的符号。这个处理的策略被称为“贪心法”。需要注意到是,除
了字符串与字符常量,符号的中间不能嵌有空白(空格、制表符、换行符等)。比如: 



单个符号,而是两个等号。

按照这个规则可能很轻松的判断 
a+++b表达式与 
a+++b一致。那 
++i+++i+++i;会被解
析成什么样子呢?希望读者好好研究研究。另外还可以考虑一下这个表达式的意思: 
a+++++b;

2。8,2/(…2)的值是多少?
除法运算在小学就掌握了的,这里还要讨论什么呢?别急,先计算下面这个例子: 
2/(…2)的值为多少?2%(…2)的值呢?
如果与你想象的结果不一致,不要惊讶。我们先看看下面这些规则:
假定我们让 
a除以 
b,商为 
q,余数为 
r: 
q=a/b; 
r=a%b;
这里不妨先假定 
b大于 
0。
我们希望 
a、b、q、r之间维持什么样的关系呢? 
1,最重要的一点,我们希望 
q*b 
+r 
 
a,因为这是定义余数的关系。 
2,如果我们改变 
a的正负号,我们希望 
q的符号也随之改变,但 
q的绝对值不会变。 
3,当 
b》0时,我们希望保证 
r》=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 
》=大于等于表达式》=表达式
左到右
双目运算符 

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的