请问i+++i如何理解?
i+++i 怎么理解 i=1; a=i+++i; a为什么是2 从百度帖吧上看来的
++i不是右结合么?理解为a=i+(++i) 则先使i自加,i为2,再引用,i+i=2+2=4。
为什么运行结果会是2?
----------------解决方案--------------------------------------------------------
本来不想回答这个问题``看在你ID是我很喜欢的人物上回答一下吧``
i+++i 其实应该是 (i++) + i 当有多个相同的运算符号一起时``编译器按最多的组合来
组成一个运算符``
又如 i+++++i 就是i++ ++ + i 这个很明显就错了``
像这样回产生让你打不到方向的代码``你最好别写``我就永远不回写``
我只写我有%100把握知道是什么结果的代码
如果要让结果是4 `我就先++i 在 i+i
如果我要结果是2 就 i+i 再++i
----------------解决方案--------------------------------------------------------
C PRIMER PLUS里面写到:
当一个变量多次出现在一个表达式里时,不要将增量运算符或减量运算符运用到它上面
eg: y=n+++n++;
y得结果会根据编译器得不同而不同
但是肯定得是最后n都会加上2......
----------------解决方案--------------------------------------------------------
未定义行为
不同的编译器输出不同的结果
研究这个没意思
不要按老谭的思路学C
那样只会害你
----------------解决方案--------------------------------------------------------
如果是我我会这么写:
a=i++<<1;
这样应该没问题了吧?优先级很清晰了……a等于2,如果要a等于4的话
a=++i<<1;
----------------解决方案--------------------------------------------------------
不说我也真的会和LZ一样的想啊~~
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]死了都要C[/underline][/bold] 于 2007-12-2 13:44 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1126757&ptid=189879][/url]
本来不想回答这个问题``看在你ID是我很喜欢的人物上回答一下吧``
i+++i 其实应该是 (i++) + i 当有多个相同的运算符号一起时``编译器按最多的组合来
组成一个运算符``
又如 i+++++i 就是i++ ++ + i 这个很明显就错了``
...
本来不想回答这个问题``看在你ID是我很喜欢的人物上回答一下吧``
i+++i 其实应该是 (i++) + i 当有多个相同的运算符号一起时``编译器按最多的组合来
组成一个运算符``
又如 i+++++i 就是i++ ++ + i 这个很明显就错了``
...
这个这个,太感谢了!
----------------解决方案--------------------------------------------------------
不用理解 未定义行为 根据编译器不同而不同
这种代码看到就不用管他 垃圾代码
在工作时写这 就该被炒鱿鱼了
----------------解决方案--------------------------------------------------------
a=i+++i; a为什么是2
自右向左结合 (i+)(++i) 第一次执行值自然为2 因为i的值为1,++i是等值运算后再+1。
----------------解决方案--------------------------------------------------------