| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1638 人关注过本帖
标题:性感菜鸡,在线求解。
只看楼主 加入收藏
菜鸡在线求问
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2018-11-29
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:9 
性感菜鸡,在线求解。
图片附件: 游客没有浏览图片的权限,请 登录注册

求解,这个怎么循环出来的。那个k不是一直再增加吗,一直大于零吗

[此贴子已经被作者于2018-11-29 23:56编辑过]

搜索更多相关主题的帖子:  在线 循环 增加 大于 
2018-11-29 23:54
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:4 
常有这种情况,一直重复做:
while (1)
{
    ......
}
2018-11-30 05:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
难道又是《谭浩强》之类的书?
C/C++标准都规定 具符号整型的溢出 属于 未定义行为。所以此书作者认为 k 增大到 SHRT_MAX 之后再增一就会变为负数 是想当然了。


[此贴子已经被作者于2018-11-30 08:43编辑过]

收到的鲜花
  • lin51616782018-11-30 10:44 送鲜花  10朵   附言:点赞
2018-11-30 08:34
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
收藏
得分:7 
这题,出题人的意思是想告诉你

short 的范围! k自增,然后会溢出,然后变为负数,退出循环!

代码里面,k自增完,还专门给出了一条输出语句,想看你看到k具体会变成多少!

理解题目意思就好了!这种题,不用太纠结!

因为毕竟像楼上说的,未定义行为

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-30 10:49
菜鸡在线求问
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2018-11-29
收藏
得分:0 
回复 3楼 rjsp
谢谢了。
2018-11-30 13:16
菜鸡在线求问
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2018-11-29
收藏
得分:0 
回复 4楼 Tomorrw_I
大一,刚开始学,什么都不懂,以后得靠你们了,哈哈,大佬求带。
2018-11-30 13:17
菜鸡在线求问
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2018-11-29
收藏
得分:0 
回复 3楼 rjsp
刚开始学,大佬求带。
2018-11-30 13:18
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
回复 3楼 rjsp
突破范围后不就该变为负数吗?书上甚至还有其变化过程,最大值加1就变成最小负数了,我用的确实是谭浩强的书,但是没感觉溢出变负数有啥问题啊。新手一枚,求教
2018-11-30 15:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:2 
以下是引用lxk1732942在2018-11-30 15:18:14的发言:

突破范围后不就该变为负数吗?书上甚至还有其变化过程,最大值加1就变成最小负数了,我用的确实是谭浩强的书,但是没感觉溢出变负数有啥问题啊。新手一枚,求教
可是C标准不是这么规定的呀,C标准规定符号类型的溢出是未定义行为(符号类型的溢出则是良好定义行为)
以 for( int k=INT_MAX; k>0; ++k ){} 为例,编译器在优化时可能直接就将其作为死循环对待,即优化成 while( 1 );
因为 k溢出属于未定义行为,编译器根本无须考虑任何未定义行为,那么k在正常行为下就一直大于0,即死循环。(编译器只须要保证正确行为正确就行,不需要保证错误行为正确,也不需要保证错误行为一定错误)

谭浩强是根据 Turbo C 编译器来瞎猜C标准的,在TC中正确的,可能确实应该正确,也可能是TC的“实现定义”,也可能是TC的“未定义”;同样,在TC中错误的,也有可能只是TC的bug。
用《谭浩强》来学C语言,无异于向神婆学现代物理。
2018-11-30 17:03
李少iii
Rank: 4
来 自:KUNMING
等 级:业余侠客
威 望:2
帖 子:67
专家分:245
注 册:2018-10-4
收藏
得分:0 
c语言就数这些理论化的东西最难了

我不曾拥有梦想,但我坚信我有未来……
2018-12-01 11:17
快速回复:性感菜鸡,在线求解。
数据加载中...
 
   



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

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