标题:两个一样的代码输出的结果为何不同 求大佬指点迷津
只看楼主
Sv少
Rank: 3Rank: 3
来 自:山东青岛
等 级:论坛游侠
威 望:1
帖 子:53
专家分:168
注 册:2011-11-7
得分:2 
你调试一下 看一下a的值
第一段a 没有初始值 有的直接可能默认为0;直接跳过循环,有输出值。
第二段a=1 而a++ 使得a>0条件成立  就会在while中一直循环,不会执行下面语句,没有输出。

Sv少  run
2020-03-18 19:22
下凡小仙男
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2020-3-16
得分:0 
回复 9楼 叶纤
,a到了最大的时候继续a++,他就会成负数,我之后printf输出的是a-1,他就会成最大数了。是不是这样考虑的
2020-03-18 19:23
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
你每次输出值就能看出来了。

2020-03-18 19:27
下凡小仙男
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2020-3-16
得分:0 
回复 11楼 Sv少
a到了最大的时候继续a++,他就会成负数,我之后printf输出的是a-1,他就会成最大数了。会不会是这样考虑的
2020-03-18 19:27
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
第二个是死循环

2020-03-18 19:29
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
回复 14楼 下凡小仙男
你把a定义成0他就不满足a>0的条件,就会跳过死循环,

2020-03-18 19:30
下凡小仙男
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2020-3-16
得分:0 
回复 16楼 return_0
我把a定义成0,马上就出结果,要是定义成1,程序要等一会儿才出结果,很好奇其中的秘密
2020-03-18 19:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用下凡小仙男在2020-3-18 19:33:52的发言:

我把a定义成0,马上就出结果,要是定义成1,程序要等一会儿才出结果,很好奇其中的秘密
什么秘密?
2020-03-18 19:50
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
避免使用无符号类型,因为使用无符号进行运算有可能会出现环绕和益处,就比如你第二个代码,如果益处就会进入环绕状态,也就是说最后是1-1=0,0不大于0为faulse,此时终止循环,楼主又说了把a定义为0,那就直接faulse,然后直接a-1为复数,此时进行了环绕为最大值

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-18 20:05
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
总之除非必要使用无符号的情况下应避免使用

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-18 20:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500418-1-1.html




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

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