社区
C语言
帖子详情
if求解释
l369294289
2011-11-24 10:28:25
if(b*b-4*a*c > 0) 和 if(b*b > 4*a*c)有什么不同,为什么在oj上写成前一种能过,写成后一种就WA了?
...全文
217
25
打赏
收藏
if求解释
if(b*b-4*a*c > 0) 和 if(b*b > 4*a*c)有什么不同,为什么在oj上写成前一种能过,写成后一种就WA了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
l369294289
2011-11-25
打赏
举报
回复
[Quote=引用 21 楼 pengzhixi 的回复:]
引用 19 楼 l369294289 的回复:
引用 18 楼 pengzhixi 的回复:
前面一个可能会超出Int的表示范围,比如4*a*c是一个绝对值很大的负数,b*b也是一个很大的正数,那么b*b-4*a*c那么就可能非常的的正数超出int的表示范围。
呵呵~好吧~我发现我真的好笨额~
额,这个属于一些细节东西,不是笨不笨的问题,一般很少会注意到而已。
[/Quote]
其实,做OJ上的题,特别是简单题,一般都要考虑到有卡数据的情况,这么明显我却没想到,确实是我二了。
l369294289
2011-11-25
打赏
举报
回复
[Quote=引用 20 楼 pengzhixi 的回复:]
当上溢的时候那么可能就会得到一个负数,那么b*b-4*a*c>0就得到相反的结论。
[/Quote]
恩恩,以后有什么问题还请大侠多多指教~
pengzhixi
2011-11-25
打赏
举报
回复
[Quote=引用 19 楼 l369294289 的回复:]
引用 18 楼 pengzhixi 的回复:
前面一个可能会超出Int的表示范围,比如4*a*c是一个绝对值很大的负数,b*b也是一个很大的正数,那么b*b-4*a*c那么就可能非常的的正数超出int的表示范围。
呵呵~好吧~我发现我真的好笨额~
[/Quote]
额,这个属于一些细节东西,不是笨不笨的问题,一般很少会注意到而已。
pengzhixi
2011-11-25
打赏
举报
回复
当上溢的时候那么可能就会得到一个负数,那么b*b-4*a*c>0就得到相反的结论。
l369294289
2011-11-25
打赏
举报
回复
[Quote=引用 18 楼 pengzhixi 的回复:]
前面一个可能会超出Int的表示范围,比如4*a*c是一个绝对值很大的负数,b*b也是一个很大的正数,那么b*b-4*a*c那么就可能非常的的正数超出int的表示范围。
[/Quote]
呵呵~好吧~我发现我真的好笨额~
pengzhixi
2011-11-25
打赏
举报
回复
前面一个可能会超出Int的表示范围,比如4*a*c是一个绝对值很大的负数,b*b也是一个很大的正数,那么b*b-4*a*c那么就可能非常的的正数超出int的表示范围。
l369294289
2011-11-25
打赏
举报
回复
[Quote=引用 16 楼 pengzhixi 的回复:]
你这不就是因为这个可能性引起的。size()返回的应该就是unsigned int 两者相减的话,即使小的减大的 就会出现问题,比如2-4结果肯定是大于1的。
[/Quote]
恩恩~发现了额~我书都白看了~谢谢~
但是这一个if(b*b-4*a*c > 0) 和 if(b*b > 4*a*c)有什么不同?a,b,c都是我定义的int型。
pengzhixi
2011-11-25
打赏
举报
回复
你这不就是因为这个可能性引起的。size()返回的应该就是unsigned int 两者相减的话,即使小的减大的 就会出现问题,比如2-4结果肯定是大于1的。
l369294289
2011-11-25
打赏
举报
回复
[Quote=引用 9 楼 anyidan 的回复:]
引用 6 楼 pengzhixi 的回复:
因为如果两个unsigned相减或者 一个Int,一个unsigned相减得到的结果永远大于0
应该是 前一种不能过,写成后一种就能过了
前一种可能溢出
[/Quote]
我之前也觉得while ( big.size () > sml.size () + 1 )这种会溢出,但是这种可以AC,改成后面一种就会WA
l369294289
2011-11-25
打赏
举报
回复
[Quote=引用 8 楼 keiy 的回复:]
如果都是int的话,看不出有什么区别
从汇编角度,前者只是多用了个减法运算
[/Quote]
呵呵~我们都这么认为~学长称这是人品题。哈哈~
l369294289
2011-11-25
打赏
举报
回复
[Quote=引用 6 楼 pengzhixi 的回复:]
因为如果两个unsigned相减或者 一个Int,一个unsigned相减得到的结果永远大于0
[/Quote]
这个我知道,可是不是因为这个引起的。我也不知道为什么。求大侠解释
http://www.miyub.com/2011/11/11/a-b-1-%e4%b8%8e-a-b-1-uva-10107-what-is-the-median.htm
lancerEx
2011-11-25
打赏
举报
回复
[Quote=引用 9 楼 anyidan 的回复:]
引用 6 楼 pengzhixi 的回复:
因为如果两个unsigned相减或者 一个Int,一个unsigned相减得到的结果永远大于0
应该是 前一种不能过,写成后一种就能过了
前一种可能溢出
[/Quote]
我也觉得应该是这样,LZ是不是写错了
刀刀亮
2011-11-25
打赏
举报
回复
[Quote=引用 8 楼 keiy 的回复:]
如果都是int的话,看不出有什么区别
从汇编角度,前者只是多用了个减法运算
[/Quote]
牛人思考层面就是不一样
w28050
2011-11-25
打赏
举报
回复
好吧,说实话,这题我不会,不解释。
槑党--一缕风
2011-11-25
打赏
举报
回复
说实话,这题我不会,不解释。
子牙河畔
2011-11-25
打赏
举报
回复
区别不大,主要是你使用的软件的问题,你用别的软件试试就知道了。
AnYidan
2011-11-24
打赏
举报
回复
[Quote=引用 6 楼 pengzhixi 的回复:]
因为如果两个unsigned相减或者 一个Int,一个unsigned相减得到的结果永远大于0
[/Quote]
应该是 前一种
不
能过,写成后一种就
能过
了
前一种可能溢出
柯本
2011-11-24
打赏
举报
回复
如果都是int的话,看不出有什么区别
从汇编角度,前者只是多用了个减法运算
走在路上的人吧
2011-11-24
打赏
举报
回复
[Quote=引用 6 楼 pengzhixi 的回复:]
因为如果两个unsigned相减或者 一个Int,一个unsigned相减得到的结果永远大于0
[/Quote]
++
pengzhixi
2011-11-24
打赏
举报
回复
因为如果两个unsigned相减或者 一个Int,一个unsigned相减得到的结果永远大于0
加载更多回复(5)
青少儿信息学奥赛-分支-if…else if…else if…else…和switch语句
本课程为零基础C++语法专题课,是青少儿参加信息学奥赛NOIP通关必备-语法专题课; 2、本课程每节课均配有练习题以及真题,以锻炼... 6、本课程介绍的是程序的分支结构-if…else if…else if…else…和switch语句的知识
python中if语句
求
最大值_python 条件控制 if语句
python 条件控制 if语句python编程中 if语句用于控制程序的执行, if分支使用布尔表达式或布尔值作为分支条件来进行分支控制, if关键字后面的表达式如果为真,则进入到if语句块执行代码, 程序通过if语句中对条件...
if or函数套用_if/and/or函数入门及简单嵌套
②语法:IF(logical_test,value_if_true,value_if_false)IF(判断条件,结果为真时的返回值,结果为假时的返回值)③参数
解释
logical_test——判断条件(比如2>1,2<1,A1>A2等等一些判断逻辑)。value_if_true...
Java if else语句详解
if 语句是使用最多的条件分支结构,它属于选择语句,也可以称为条件语句。下面将详细介绍 if 语句的各种形式及其用法。 if 语句语法 if 选择结构是根据条件判断之后再做处理的一种语法结构。默认情况下,if...
c语言if函数的作用是什么意思,if是什么意思_if,意思_词汇大全意思全集
概括:本文是早旭阅读网网友分享的词汇大全,专注各种词汇
解释
,分享网络词语的意思,助你增长知识。if是什么意思:if是什么意思?conj. 是否;如果;即使;每当n. 条件;设想if作为从属连词,可引导条件状语从句、...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章