社区
C语言
帖子详情
if求解释
l369294289
2011-11-24 10:28:25
if(b*b-4*a*c > 0) 和 if(b*b > 4*a*c)有什么不同,为什么在oj上写成前一种能过,写成后一种就WA了?
...全文
247
25
打赏
收藏
if求解释
if(b*b-4*a*c > 0) 和 if(b*b > 4*a*c)有什么不同,为什么在oj上写成前一种能过,写成后一种就WA了?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
python中if语句
求
最大值_python 条件控制 if语句
python 条件控制 if语句python编程中 if语句用于控制程序的执行, if分支使用布尔表达式或布尔值作为分支条件来进行分支控制, if关键字后面的表达式如果为真,则进入到if语句块执行代码, 程序通过if语句中对条件...
c语言中if内函数值为零,C语言——if(0)之后的语句真的不会执行吗?
1.1、形式:if (表达式) {语句… }1.2、
解释
:在执行if语句时,首先会计算表达式的值,如果表达式的值为零,语句不会执行,若非零,则执行语句。由此可见if (0)表示不执行,if (1)表示要执行。if (x)根据x的值是否为...
c语言if函数的作用是什么意思,if是什么意思_if,意思_词汇大全意思全集
概括:本文是早旭阅读网网友分享的词汇大全,专注各种词汇
解释
,分享网络词语的意思,助你增长知识。if是什么意思:if是什么意思?conj. 是否;如果;即使;每当n. 条件;设想if作为从属连词,可引导条件状语从句、...
C语言if else语句详解
但是对于很多情况,顺序结构的代码是远远不够的,这时我们就要使用判断语句即if else语句。 在C语言中,使用if和else关键字对条件进行判断。请先看下面的代码: #include <stdio.h> int main() { int age; ...
Nginx “If Is Evil“详解,以及if使用须知
nginx if 语句其实是 rewrite的一部分,我们在配置nginx时,需要明白if的一些特点。 有关被 nginx 官方自我批判的 if 语句,《If Is Evil》—— 着实应成为每位开发者初次使用 nginx if 之前必读的文章。 即使...
C语言
70,024
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章