| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 645 人关注过本帖
标题:新手求教一段C程序 (-++)
只看楼主 加入收藏
Seraph_SIOC
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-9-2
结帖率:0
收藏
已结贴  问题点数:5 回复次数:7 
新手求教一段C程序 (-++)
下面结果是否有人解释一下,谢谢:

main()
{ int x,i;
  x=3;
  i=x;
  printf("%d, %d, %d", i, -i++, -++i);
}

结果5, -4, -4
5理解,后面-4怎么来的?
2013-09-02 22:56
Seraph_SIOC
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-9-2
收藏
得分:0 
明白了,自己顶一个
2013-09-02 23:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:1 
函数参数求解顺序是 未指定 的
序列点之间多次写是 未定义 的
所以,对于你这代码,无法解释其结果

VC9Debug下输出 5, -4, -5
VC9Release下输出 4, -4, -4
Gcc4.8.1输出 5, -4, -4
所以,不论你是怎么解释的,解释了其中一个,就和其他的现象矛盾,即,所有的解释都是瞎扯蛋。
2013-09-03 09:05
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
凑个热闹  
vs2010下 无法编译  添加void main 之后 输出为  5,-4,-5

DO IT YOURSELF !
2013-09-03 09:11
jg658237
Rank: 7Rank: 7Rank: 7
来 自:青藏高原
等 级:黑侠
帖 子:224
专家分:529
注 册:2013-8-8
收藏
得分:1 
函数参数求解顺序是未指定的,按照他们的优先级计算,因为-i++, -++i,按从左往右的顺序
即可算出最后结果.

武功再高也怕菜刀.
2013-09-03 09:14
jg658237
Rank: 7Rank: 7Rank: 7
来 自:青藏高原
等 级:黑侠
帖 子:224
专家分:529
注 册:2013-8-8
收藏
得分:0 
结果为;5,-4,-5

武功再高也怕菜刀.
2013-09-03 09:15
guhemeng
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:100
专家分:165
注 册:2013-7-27
收藏
得分:1 
  学习中~~~~~~~~~~~~~~~
2013-09-03 16:29
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:1 
知道什么叫序列点么...
这种代码有什么意思?
编译器未定义行为

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-09-03 18:50
快速回复:新手求教一段C程序 (-++)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022831 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved