对++演算结果的疑问
对++运算结果的疑问
如下代码:
#include <Stdafx.h>
void main()
{
int i = 1 ;
int p ;
p = (++i) * (++i) ;
printf("The result is %d\n",p) ;
printf("The var I is %d\n",i) ;
}
运行后结果是 p = 9 ; i = 3 ;
但是我对p的结果不理解,p = (++i) *(++i),
先算乘号左边 ++i 表达式++i的值= 2 ,i = 2
然后算右边的++i表达式,表达式++i的值=3,i =3 ;
最后做乘法 p= 2*3 = 6 , i = 3 ;但是结果P却是9~~为什么?请描述程序执行顺序
------解决方案--------------------
看置顶贴六字符
------解决方案--------------------
不同的编译器可能结果不会不同
应该避免这种用法,也不要试图在未知环境中预测这种用法的行为
------解决方案--------------------
不要在纠结这个问题了.
没有意义.
不同编译器,结果可能会不同.
不要在同一个语句,出现多个++或者--.不仅晦涩难懂,还易出错.
------解决方案--------------------
这个还是不要写这样的程序,这个结果和编译器有关,不同的编译器会有不同的结果。
------解决方案--------------------
为何把有限的声明浪费到没有定义的 behavior 上
如下代码:
#include <Stdafx.h>
void main()
{
int i = 1 ;
int p ;
p = (++i) * (++i) ;
printf("The result is %d\n",p) ;
printf("The var I is %d\n",i) ;
}
运行后结果是 p = 9 ; i = 3 ;
但是我对p的结果不理解,p = (++i) *(++i),
先算乘号左边 ++i 表达式++i的值= 2 ,i = 2
然后算右边的++i表达式,表达式++i的值=3,i =3 ;
最后做乘法 p= 2*3 = 6 , i = 3 ;但是结果P却是9~~为什么?请描述程序执行顺序
------解决方案--------------------
看置顶贴六字符
------解决方案--------------------
不同的编译器可能结果不会不同
应该避免这种用法,也不要试图在未知环境中预测这种用法的行为
------解决方案--------------------
不要在纠结这个问题了.
没有意义.
不同编译器,结果可能会不同.
不要在同一个语句,出现多个++或者--.不仅晦涩难懂,还易出错.
------解决方案--------------------
这个还是不要写这样的程序,这个结果和编译器有关,不同的编译器会有不同的结果。
------解决方案--------------------
为何把有限的声明浪费到没有定义的 behavior 上