当前位置: 代码迷 >> C语言 >> 请问i+++i如何理解?
  详细解决方案

请问i+++i如何理解?

热度:136   发布时间:2007-12-02 13:24:23.0
请问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 这个很明显就错了``
...


这个这个,太感谢了!
----------------解决方案--------------------------------------------------------
不用理解 未定义行为 根据编译器不同而不同
这种代码看到就不用管他 垃圾代码
在工作时写这 就该被炒鱿鱼了
----------------解决方案--------------------------------------------------------
a=i+++i; a为什么是2
自右向左结合 (i+)(++i) 第一次执行值自然为2 因为i的值为1,++i是等值运算后再+1。
----------------解决方案--------------------------------------------------------
  相关解决方案