| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 604 人关注过本帖
标题:当输入 3 为什么是 4 不是 3 ?
只看楼主 加入收藏
沙鱼1234
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-6-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
当输入 3 为什么是 4 不是 3 ?
#include<stdio.h>
main()
{int x;
scanf("%d",&x);
if(x++>5)
printf("%d",x);
else printf("%d\n",x--);






}
搜索更多相关主题的帖子: 摇篮 
2014-06-22 16:16
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:4 
if(x++>5)
printf("%d",x);

++在后面 所以比较的是x和5的大小 但比较之后x自增了 也就变成了4 输出的是4

千万别忘了还有一步自增
2014-06-22 16:50
xiaozi2013
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:四川成都
等 级:蒙面侠
威 望:6
帖 子:830
专家分:4331
注 册:2013-12-13
收藏
得分:4 
printf("%d\n",x--);

此句或许因编译器而言他。

--整天敲那些破代码能找着媳妇儿吗。。。---
2014-06-22 16:58
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:4 
https://bbs.bccn.net/thread-372928-1-1.html

又问这问题.小心T版给你锁了.

程序代码:
#include<stdio.h>
main()
{int x;
scanf("%d",&x);
if(x++>5)            //问题在这.这里执行了一次x=x+1.
printf("%d",x);
else printf("%d\n",x--);
}


个人认为x++这种表达式有两层意思:

1,  数学方面,  x的值增加1.也就是x=x+1.  但是是先使用,后加1,  应该所有的C教材都有这个解释吧.
2,  存储方面,  x的值加1后,存储在x所在的存储单元,x原来的值被覆盖.(高手说一下,这里对吗?)

如果实现你想要输入3,输出也是3,最好使用这种形式:
程序代码:
......
if((x+1)>5)
......


对于你的代码,你会发现把x++换成++x,然后运行输入3会得到一样的结果,还是输出4.

[ 本帖最后由 vvvcuu 于 2014-6-22 17:06 编辑 ]

代码测试环境:  WinXP+C-Free5.0.
2014-06-22 17:00
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用vvvcuu在2014-6-22 17:00:54的发言:

https://bbs.bccn.net/thread-372928-1-1.html
 
又问这问题.小心T版给你锁了.
 
 
#include
main()
{int x;
scanf("%d",&x);
if(x++>5)            //问题在这.这里执行了一次x=x+1.
printf("%d",x);
else printf("%d\n",x--);
}
 
 
个人认为x++这种表达式有两层意思:
 
1,  数学方面,  x的值增加1.也就是x=x+1.  但是是先使用,后加1,  应该所有的C教材都有这个解释吧.
2,  存储方面,  x的值加1后,存储在x所在的存储单元,x原来的值被覆盖.(高手说一下,这里对吗?)
 
如果实现你想要输入3,输出也是3,最好使用这种形式:
 
......
if((x+1)>5)
......
 
 
对于你的代码,你会发现把x++换成++x,然后运行输入3会得到一样的结果,还是输出4.

这种不算 没有歧义的
2014-06-22 17:39
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:4 
这个T版不会锁

总有那身价贱的人给作业贴回复完整的代码
2014-06-22 19:31
沙鱼1234
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-6-22
收藏
得分:0 
回复 2 楼 zklhp
多谢   明白了  我还以为直接进行else后的printf
2014-06-23 00:51
沙鱼1234
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-6-22
收藏
得分:0 
回复 5 楼 zklhp
多谢   明白了  我还以为直接进行else后的printf
2014-06-23 00:51
沙鱼1234
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-6-22
收藏
得分:0 
回复 3 楼 xiaozi2013
开始我也这么认为  你看看4楼
2014-06-23 00:53
沙鱼1234
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-6-22
收藏
得分:0 
回复 4 楼 vvvcuu
谢谢
2014-06-23 00:55
快速回复:当输入 3 为什么是 4 不是 3 ?
数据加载中...
 
   



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

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