翅膀团 发表于 2015-5-13 13:50:26

又一道求解释

本帖最后由 翅膀团 于 2015-5-15 22:03 编辑

新手求教

风茄 发表于 2015-5-13 16:57:41

一样的代码我运行出来就是这个结果。
9
8
8
9
-8
-9

ANDES 发表于 2015-5-13 17:43:50

pritf(“%d\n%d\n......”)把里面的\n去掉就能是你想要的结果。初学者别那么心急问别人为什么,这种问题很简单,自己多想想。

哥斯拉不说话 发表于 2015-5-13 18:08:38

编译器自身的优化导致的, 换一个编译器就可能得到不同的结果, 这种天朝的题目毫无意义, 不用纠结这个, 如果你非想知道为什么, 可以进汇编看看, 一看就知道了。

风茄 发表于 2015-5-14 13:51:10

本帖最后由 风茄 于 2015-5-14 13:53 编辑

ANDES 发表于 2015-5-13 17:43
pritf(“%d\n%d\n......”)把里面的\n去掉就能是你想要的结果。初学者别那么心急问别人为什么,这种问题 ...
这说法太奇葩了。换行符怎么会影响答案。
然后我重新理解了一下。你完全没有仔细看lz的问题好吗。

翅膀团 发表于 2015-5-14 20:21:10

风茄 发表于 2015-5-14 13:51
这说法太奇葩了。换行符怎么会影响答案。
然后我重新理解了一下。你完全没有仔细看lz的问题好吗。

而且printf打成了pritf

ANDES 发表于 2015-5-14 20:27:37

风茄 发表于 2015-5-14 13:51
这说法太奇葩了。换行符怎么会影响答案。
然后我重新理解了一下。你完全没有仔细看lz的问题好吗。

理解正确, 我看错了。

ANDES 发表于 2015-5-14 20:28:08

翅膀团 发表于 2015-5-14 20:21
而且printf打成了pritf

呵呵,如果你纠结我这个printf打错了,好吧,你赢了。

凌风破浪 发表于 2015-5-14 21:19:27

没一个正确答案

漠水 发表于 2015-5-14 22:07:06

不是可以去汇编下看看吗?

哥斯拉不说话 发表于 2015-5-14 22:14:17

用汇编看就知道了

翅膀团 发表于 2015-5-15 22:03:07

经过自己的几次试验,发现是编译器在操蛋。在printf() 中,里面的参数有几个时,不管是i++还是i--都跟i一样。

风茄 发表于 2015-5-16 14:07:54

我突然在c++primer里看到答案了哈哈。
“不要在同一条语句对同一个值递增或递减多次,规则“使用后修改”和“修改后使用”可能会变得模糊不清。也就是说,在不同的系统上将生成不同的结果。对于这种语句,C++没有定义正确的行为。”

liveloo 发表于 2015-7-13 22:21:43

C++Primer
页: [1]
查看完整版本: 又一道求解释