| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2355 人关注过本帖
标题:小问题,无法解决,求指导
只看楼主 加入收藏
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
 问题点数:0 回复次数:10 
小问题,无法解决,求指导
程序代码:
#include <stdio.h>
int main()
{
    int i=1;
    printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,i++,i--,++i,--i,--i,-i--,-i++);
}
请问为什么会出现那样的答案。源程序正确。
搜索更多相关主题的帖子: int i++ 出现 答案 源程序 
2018-01-25 10:30
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
得分:0 
以下是引用双翼天使在2018-1-25 10:30:48的发言:

#include <stdio.h>
int main()
{
    int i=1;
    printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,i++,i--,++i,--i,--i,-i--,-i++);
}请问为什么会出现那样的答案。源程序正确。

答案为0 0 0 0 -1 0 -1 -1
2018-01-25 10:47
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
这代码用来做什么用的,不知道的免谈。
2018-01-25 10:48
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
得分:0 
回复 3楼 吹水佬
一道练习题,用来研究i++和++i的
2018-01-25 12:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用双翼天使在2018-1-25 12:28:20的发言:

一道练习题,用来研究i++和++i的
研究不出来的,因为这属于“未定义行为”,即C/C++标准认为没人会写出这样的代码,自然也就不考虑遇到这样的代码时怎么解决。
以前某版的gcc,遇到这种情况就会随机启动一个游戏,这样做是符合C/C++标准的。

就你的这段代码而言,问题在于函数参数的表达式求值顺序是未指定的,且之间无序列点。
(网上有些外行说什么入栈顺序,入栈顺序和达式求值顺序无任何丝毫关系)

C的规则可参见 http://zh.
C++的规则可参见 http://zh.
2018-01-25 15:12
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用双翼天使在2018-1-25 12:28:20的发言:

一道练习题,用来研究i++和++i的

建议不要用类似的思路去研究i++和++i,i++和++i本来就是很简单的运算,无需搞得那么复杂,给人的感觉是有点乱来。
2018-01-25 15:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
vc19(debug): 0 -1 0 0 0 0 -2 -1
vc19(release): 0 0 0 0 0 0 -1 -1
clang7: 1 1 2 2 1 0 0 1
2018-01-25 15:42
beichei5d
Rank: 4
等 级:业余侠客
威 望:2
帖 子:89
专家分:270
注 册:2016-3-8
收藏
得分:0 
回复 5楼 rjsp
学习了。。

你现在所偷的懒,都将成为以后扇你的巴掌!共勉吧。。。
2018-01-25 15:46
小白0号
Rank: 1
等 级:新手上路
帖 子:13
专家分:7
注 册:2018-1-4
收藏
得分:0 
简单点理解就好,i++和++i在单独一条语句的时候意思是一样的,都是i+1,比如i=0,那两个的值都是1.
如果和其他语句混用的话就有区别了,比如i=0,++i之后i的值就是1,但i++的值仍然是0,但是此时i的值已经变成1了,如果后面还需要用到i的话,那它的值就是1.你的这个程序太复杂,没必要,应该看简单的程序实例,本来就不懂,还整这么麻烦的,不给自己找虐么
2018-01-25 20:34
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
得分:0 
谢谢各位了
2018-01-31 19:08
快速回复:小问题,无法解决,求指导
数据加载中...
 
   



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

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