周同学 发表于 2016-12-16 00:57:22

c语言入门

#include <stdio.h>

void main()
{
    int i = 2,p;
    p = ++i + ++i;
    printf("%d",p);
}
为什么输出的是8 而不是7 是不是因为从右算所以还要加1

Kotori 发表于 2016-12-16 08:25:45

++i表示先递增,后运算。
这里有两次递增,递增后i=4,所以结果是4+4=8。

周同学 发表于 2016-12-16 11:48:41

本帖最后由 周同学 于 2016-12-16 11:50 编辑

Kotori 发表于 2016-12-16 08:25
++i表示先递增,后运算。
这里有两次递增,递增后i=4,所以结果是4+4=8。

那如果再加一个++i运算结果是等于13的按你这样的话不是等于15了还是不对呀。。。。。。对了++i 是有括号的

conn 发表于 2016-12-16 11:51:24

精辟

zealstar 发表于 2016-12-16 14:26:15

我没搞懂……

++i + ++i 输出是8   (4+4)

++i + ++i + ++i 输出是13??

为什么?
如果按运算符优先级,确实++是2,+是5,那么先运算++的话,第二个表达式应该是 5+5+5=15啊?

人造人 发表于 2016-12-16 22:48:58

一看便知

人造人 发表于 2016-12-16 22:51:51

zealstar 发表于 2016-12-16 14:26
我没搞懂……

++i + ++i 输出是8   (4+4)


Kotori 发表于 2016-12-16 22:54:33

VS2015:

可能是编译器的问题,看下反汇编吧.....

zealstar 发表于 2016-12-17 11:15:59

本帖最后由 zealstar 于 2016-12-17 11:23 编辑

人造人 发表于 2016-12-16 22:51


多谢,应该是以前的编译器的问题,DEV C++也不太可靠啊,{:10_277:}



它先算的左边2个++i,然后就丢进AX里了……之后又做了一个++i放DX里…………蛋疼……{:10_245:}

zealstar 发表于 2016-12-17 11:23:47

Kotori 发表于 2016-12-16 22:54
VS2015:

可能是编译器的问题,看下反汇编吧.....

也多谢你,看来必须装VC2015嘛……以前的编译器都用不成的感觉

zealstar 发表于 2016-12-17 16:11:33

人造人 发表于 2016-12-16 22:51


在虚拟机的CentOS 6里面测试也是13……我有点晕了……到底问题出在哪??

人造人 发表于 2016-12-17 17:14:37

zealstar 发表于 2016-12-17 16:11
在虚拟机的CentOS 6里面测试也是13……我有点晕了……到底问题出在哪??

“到底问题出在哪??”
编译器
^_^
现在可以说了:
不同的环境(编译器,或其他硬件平台)得到的结果不同!
纠结这类问题没有意义。
^_^

zealstar 发表于 2016-12-17 21:13:27

人造人 发表于 2016-12-17 17:14
“到底问题出在哪??”
编译器
^_^


可能因为我的是AMD的CPU吧……好了,真心不纠结了

顺便一问,你用的是Z版WIN10系统么?

人造人 发表于 2016-12-17 23:20:32

zealstar 发表于 2016-12-17 21:13
可能因为我的是AMD的CPU吧……好了,真心不纠结了

顺便一问,你用的是Z版WIN10系统么?

什么是z版?

zealstar 发表于 2016-12-17 23:53:55

人造人 发表于 2016-12-17 23:20
什么是z版?

正版,Z版
D版……{:10_277:}

WIN10据说是免费版,但是我百度出来各种都有……

人造人 发表于 2016-12-18 00:45:31

本帖最后由 人造人 于 2016-12-18 00:48 编辑

zealstar 发表于 2016-12-17 23:53
正版,Z版
D版……



这年头用正版的不多啊
我的是专业版
不过用百度的激活码
win8不免费吗?
ghost不就好了
百度随便下载一个ghost安装不就好了
就算是正版,百度一堆激活码,一些激活工具
随便用一个激活不就好了
你的电脑是win7?

升到win10吧^_^
就算不用win10, win 8 也不错
win7是很久之前的版本了
不过xp用的人也不少

zealstar 发表于 2016-12-18 12:53:39

人造人 发表于 2016-12-18 00:45
这年头用正版的不多啊
我的是专业版
不过用百度的激活码


了解,主要是VS2015安装过程中下载的补丁真心太多了,感觉到这个玩意是对应WIN10的……

所以,可能在学完目前的C之后,要换系统了{:10_297:}

mhp0114 发表于 2017-2-7 10:40:55

讲道理啦,真的在写代码的时候最好不要出现这种情况。很多人都弄不清楚的啊对吧,也只有乱七八糟考试才这么做。
页: [1]
查看完整版本: c语言入门