对于你们非常简单的问题.

来源:百度知道 编辑:UC知道 时间:2024/09/22 21:18:24
我看书的时候发现一段程序,里面有这么两句话,
P=(++i)+(++i)+(++i)
J=(u++)+(u++)+(u++)
这里的i和u都等于5,P和J都是变量.
这句话结束后J,P,u,i的值分别为多少啊...我刚学了两天,不是很懂,希望能有详细解析.
一楼的解析好象有道理,可惜就是答案不会对.
书上写的饿是i=u=8 P=24 J=15只求详细解析.

p=24
j=15

++在前表示再变量运算之前先+1
++在后表示在变量运算后再+1
i=8
u=8
详解~~括号的优先级别最大 然后是++i是3个 所以i统一为8 所以结果p=24
u++是运算过后然后才加上去 统一为8
所以j=15

p=21,结束后i=8 第一步的时候p=6+7+8,
J=18,结束后U=8 第一部的时候P=5+6+7

++在前表示再变量运算之前先+1
++在后表示在变量运算后再+1

p=21,结束后i=8 p=6+7+8,
J=15,结束后u=8

++i中包含前自增操作符(结合性R->L) 优先级比加法+大 (L->R) 按照题目P=(++i)+(++i)+(++i)这样用的话 是有些难以体现其要表达的意思的(因为从直观上都看不出来正确的答案) 首先自增操作符使得i从左到右三次中变为8 ,i=8的输出是没有问题的, 然后括号中i(先不算+的话)每个数值的顺序也的确是6,7,8
问题在于+的时候首先加的是6(同时进行的是自增和加法操作) 这时候(按照我的想法)后面的自增应该完毕 这样再加i的时候数值就恒定为8 程序输出的是6+8+8 =22 这样的题目给你看好象已经有点违背了希望新手容易上手的简单程序
(而且这样的程序也许和编译器有点关系吧)
至于J=(u++)+(u++)+(u++)因为u都是后自增操作(在+运算前没有自加) 输出为5+5+5 =15 i之后仍然+到为值8
以上为个人观点 希望对你有帮助

附:在VC++6.0中 运行结果为22 和 15 (跟编译器有关系的缘故,并不推荐这样写表达式)