c语言入门
#include <stdio.h>void main()
{
int i = 2,p;
p = ++i + ++i;
printf("%d",p);
}
为什么输出的是8 而不是7 是不是因为从右算所以还要加1 ++i表示先递增,后运算。
这里有两次递增,递增后i=4,所以结果是4+4=8。 本帖最后由 周同学 于 2016-12-16 11:50 编辑
Kotori 发表于 2016-12-16 08:25
++i表示先递增,后运算。
这里有两次递增,递增后i=4,所以结果是4+4=8。
那如果再加一个++i运算结果是等于13的按你这样的话不是等于15了还是不对呀。。。。。。对了++i 是有括号的 精辟 我没搞懂……
++i + ++i 输出是8 (4+4)
++i + ++i + ++i 输出是13??
为什么?
如果按运算符优先级,确实++是2,+是5,那么先运算++的话,第二个表达式应该是 5+5+5=15啊? 一看便知
zealstar 发表于 2016-12-16 14:26
我没搞懂……
++i + ++i 输出是8 (4+4)
VS2015:
可能是编译器的问题,看下反汇编吧..... 本帖最后由 zealstar 于 2016-12-17 11:23 编辑
人造人 发表于 2016-12-16 22:51
多谢,应该是以前的编译器的问题,DEV C++也不太可靠啊,{:10_277:}
它先算的左边2个++i,然后就丢进AX里了……之后又做了一个++i放DX里…………蛋疼……{:10_245:} Kotori 发表于 2016-12-16 22:54
VS2015:
可能是编译器的问题,看下反汇编吧.....
也多谢你,看来必须装VC2015嘛……以前的编译器都用不成的感觉 人造人 发表于 2016-12-16 22:51
在虚拟机的CentOS 6里面测试也是13……我有点晕了……到底问题出在哪?? zealstar 发表于 2016-12-17 16:11
在虚拟机的CentOS 6里面测试也是13……我有点晕了……到底问题出在哪??
“到底问题出在哪??”
编译器
^_^
现在可以说了:
不同的环境(编译器,或其他硬件平台)得到的结果不同!
纠结这类问题没有意义。
^_^ 人造人 发表于 2016-12-17 17:14
“到底问题出在哪??”
编译器
^_^
可能因为我的是AMD的CPU吧……好了,真心不纠结了
顺便一问,你用的是Z版WIN10系统么? zealstar 发表于 2016-12-17 21:13
可能因为我的是AMD的CPU吧……好了,真心不纠结了
顺便一问,你用的是Z版WIN10系统么?
什么是z版? 人造人 发表于 2016-12-17 23:20
什么是z版?
正版,Z版
D版……{:10_277:}
WIN10据说是免费版,但是我百度出来各种都有…… 本帖最后由 人造人 于 2016-12-18 00:48 编辑
zealstar 发表于 2016-12-17 23:53
正版,Z版
D版……
这年头用正版的不多啊
我的是专业版
不过用百度的激活码
win8不免费吗?
ghost不就好了
百度随便下载一个ghost安装不就好了
就算是正版,百度一堆激活码,一些激活工具
随便用一个激活不就好了
你的电脑是win7?
升到win10吧^_^
就算不用win10, win 8 也不错
win7是很久之前的版本了
不过xp用的人也不少
人造人 发表于 2016-12-18 00:45
这年头用正版的不多啊
我的是专业版
不过用百度的激活码
了解,主要是VS2015安装过程中下载的补丁真心太多了,感觉到这个玩意是对应WIN10的……
所以,可能在学完目前的C之后,要换系统了{:10_297:} 讲道理啦,真的在写代码的时候最好不要出现这种情况。很多人都弄不清楚的啊对吧,也只有乱七八糟考试才这么做。
页:
[1]