海拉尔办信用卡:c++ k=a+++c

来源:百度文库 编辑:高校问答 时间:2024/04/28 22:01:12
int k=4,a=3,c=5;
k=a+++c;//这行代码是如何运算的,为什么??
为什么不是a+(++c);

C++编译器进行词法分析时,会采用从输入序列中,从左到右获取最长的正确符号的规则。所以对于a+++c;编译器会分析为(a++)+c而不是a+(++c).

注:MSDN对此的论述为“The parser separates tokens from the input stream by creating the longest token possible using the input characters in a left-to-right scan.”

k=(a++)+c;也就是
k=a+c;
a++;
是么?
反正结果是a=4
k=8
++操作的优先级比+高
下面的运算优先级逐渐降低
括号
++,--,sizeof
*, /, %
+, -
==, !=
位运算
&&
||
?:
赋值运算
逗号运算
至于为什么不是a+(++c)
我想大概是因为编译器就是这么规定了
等待高手来解答

结果应该是k=8,a=4
++是右结合的

.................