VS2005中C++计算结果与VC不一样?

inti=8;printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);正常在VC中结果应该是8778,可是以VS2005中结果却是8878,... int i=8;

printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);

正常在VC中结果应该是8778,可是以VS2005中结果却是8878,这是为什么?哪里有设置吗?
好,我知道是跟编译器有关,但我想知道在VS2005里怎样设置才能保持与VC中运算结果一样呢?是哪些设置在起作用?
展开
 我来答
717370999
2008-11-17 · TA获得超过543个赞
知道小有建树答主
回答量:329
采纳率:0%
帮助的人:460万
展开全部
不同的编译器的结果会不同的,而不同的结果也不能说是谁对谁错,它们都有自己的解释,就是说这个加号减号的运算顺序是不确定的,注意是运算顺序,不是结合顺序,比如(++i)+(++i)+(++i),这个式子,你只能根据优先级的表确定括号里面的先执行,但是谁都不能确定的告诉你三个式子是哪个先执行,所以有了不同的结果,在c的标准里面,这个是没有规定运算顺序的,在c的标准里面,有且仅有四个运算符是规定了运算顺序的,注意是运算顺序,那就是与&&,或||,逗号运算符,,唯一的三目运算符?:,除了这四个运算符规定是从左到右执行的,剩下的都没有规定运算顺序。

所以不要再追究这个一堆这样的式子最后得多少了,因为这个根本没有谁对谁错,上面是我的理解,希望对你有帮助

这个不能设置的吧,避免这样的移植性失误只能在表达式里面不要用这些表达式了,养成一个好的编程习惯
简单又奔放灬福音8
2008-11-17 · TA获得超过538个赞
知道答主
回答量:572
采纳率:0%
帮助的人:0
展开全部
编译器不同结果也不同? 那要标准干吗?

VS2005里的是错的。知道它的这个Bug后以后尽量避免使用类似代码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ChikaIto
2008-11-17 · TA获得超过326个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:0
展开全部
入栈顺序的问题 这玩艺有不定的答案 不同的编译器 不同的平台能产生五花八门的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式