野火电子论坛

标题: 【每日一题】-1和1的数值比较 [打印本页]

作者: 山外メ雲ジ    时间: 2014-2-19 00:00
标题: 【每日一题】-1和1的数值比较
分析下面的代码,求运行结果
  1. int main()
  2. {
  3.     if(-1L > 1UL)
  4.         printf("1\n");
  5.     else
  6.         printf("0\n");
  7.     return 0;
  8. }
复制代码
请回答问题后再看答案哦,否则 每日一题 就没有意义了。
答错的,讲一下 为什么 会答错 呗!





作者: 箫剑酒仙    时间: 2014-2-19 02:24
1
-1L应该是0xffff,1UL是0x0001,所以-1大
作者: 山外メ雲ジ    时间: 2014-2-19 02:26
箫剑酒仙 发表于 2014-2-19 02:24
1
-1L应该是0xffff,1UL是0x0001,所以-1大

厉害,不过long型是32位的
作者: ajungle    时间: 2014-2-19 09:22
输出为1吧,两个不同类型的数据比较,应该会转换成无符号类型。。
作者: 飞鸿印雪    时间: 2014-2-19 10:25
本帖最后由 飞鸿印雪 于 2014-2-20 09:31 编辑

题中的整型常量-1L和1UL 是存放在函数代码段(.text)?  还是像字符串常量一样存放在常量段(.rodata)?
还有如果只写-1和1是不是默认就是long型的啊?有没有类似看变量大小的sizeof来看-1L的大小的啊?
作者: 火弟    时间: 2014-2-19 10:46
走过路过,不能错过
作者: flr    时间: 2014-2-19 11:19
计算机只计算二进制码,不会算正与负,所以是-1大
作者: 晴天/zt小猪    时间: 2014-2-19 11:33
答案是1  , 大概知道负数的保存形式应该是补码
作者: chenyang    时间: 2014-2-19 15:18
真不知道是什么意思。
作者: 山外メ雲ジ    时间: 2014-2-19 15:45
flr 发表于 2014-2-19 11:19
计算机只计算二进制码,不会算正与负,所以是-1大

虽然答对结果,但解释不对
作者: 小小单片机0    时间: 2014-2-19 17:21
强烈支持,非常感谢哥们
作者: yjj    时间: 2014-2-19 17:57
学习知识了强烈支持,非常感谢哥们
作者: H.M.S    时间: 2014-2-19 20:07
-1L=0XFF FF FF FF
1UL=0X00 00 00 01
结果:1
作者: 箫剑酒仙    时间: 2014-2-19 21:56
山外メ雲ジ 发表于 2014-2-19 02:26
厉害,不过long型是32位的

啊,对奥,,,
作者: ♂荻夜    时间: 2014-2-20 10:11
负数在计算机是以补吗的形式存在的,应该是-1大吧,话说在-1后面加L是便是它的类型是长整型吗?
作者: lqy295    时间: 2014-2-20 10:38
应该是-1比较大吧
作者: Daniel_Lau    时间: 2014-2-20 10:45
进来学习一下
作者: 坚持    时间: 2014-2-21 21:53
计算机里存储的是二进制的补码,-1的补码是0xffff,1的补码是本身所以结果打出1换行
作者: Liver黄海波    时间: 2014-2-23 12:49
这个真心不懂。。。学习

作者: Liver黄海波    时间: 2014-2-23 12:49
这个真心不懂。。。学习

作者: gsc617    时间: 2014-2-23 13:02
相信第一感觉,果断是1,不会又被坑了吧。
作者: gsc617    时间: 2014-2-23 13:09
山外メ雲ジ 发表于 2014-2-19 15:45
虽然答对结果,但解释不对

C语言中,负数是用补码表示的(反码加1),正数直接用原码表示.
-1表示为:00000000 00000001 的反码 11111111 11111110+1 即 11111111 11111111 转换为十进制数为65535
还有最高位为符号位不必考虑。,So easy!
作者: hljchenxi    时间: 2014-2-23 13:56
看了评论知道是1
但是我想问  如果是 声明了两个变量  也是就   
long int i=-1;
unsigned long int u=1;
再做比较也是这样么?
那这样的话  有符号和无符号的变量作比较就容易出错了啊。。。还好至今这么做过
作者: zdd    时间: 2014-2-24 11:03
答案应该输出为1
作者: jerry_sun    时间: 2014-2-24 11:17
输出结果应该是1
作者: 陈帅    时间: 2014-2-25 09:59
走过路过,不能错过
作者: 小菜鸟    时间: 2014-2-27 14:49
-1是有符号长整型,1是无符号长整型!
作者: siasevan    时间: 2014-3-1 17:32
结果应该是1


作者: yangyankunlc    时间: 2014-3-2 09:51
学习学习……
作者: 蓝色hope    时间: 2014-3-2 14:34
-1L中的L是什么意思
作者: 可爱的深蓝    时间: 2014-3-2 16:23
学习中~~~~~~~~
作者: 活出自我    时间: 2014-3-2 22:42
真心不会,看答案
作者: xzx0330    时间: 2014-3-3 09:33
-1L=0Xffff ffff 1UL=0X0000 0001
结果:1
作者: Venice    时间: 2014-3-4 10:57
-1的补码为0xffff,1的补码是0x0001
所以输出是1换行
作者: 杀神12300    时间: 2014-3-5 19:27
答案应该是1吧
作者: Flyheart    时间: 2014-3-5 21:07
L 和 UL 是什么意思?
作者: LSQ_GSQ    时间: 2014-3-6 13:20
1吧,L和UL的区别开来就知道了
作者: paul_he    时间: 2014-3-6 14:10
-1L > 1UL 是什么意思啊
作者: shengliangcumt    时间: 2014-3-8 13:03
1  -1是0xFFFF强烈支持,非常感谢哥们
作者: BEAT    时间: 2014-3-8 18:54
打印出数值 0
作者: 草原上的星星    时间: 2014-3-10 13:27
这个还真不知道,不知UL和L是什么
作者: 潘建伟    时间: 2014-3-10 13:33
答案是 1吧
作者: xuefeng    时间: 2014-3-11 09:59
输出为1 -1L   1111  1111  1111 1111 1111 1111 1111 1111
          1UL 0000  0000  0000 0000 0000 0000 0000 0001
作者: 拈花一笑    时间: 2014-3-12 13:38
在比较操作中,会将相同长度的两个数的有符号的长整数转换为无符号的长整数,所以有-1L>1UL
作者: TsingMean    时间: 2014-3-14 09:13
笑坏我的肚子了



0



作者: wangyu    时间: 2014-3-15 23:03
强烈支持,非常感谢哥们
作者: 我和世界不一样    时间: 2014-3-16 09:51
不明白,看答案
作者: bfsm    时间: 2014-3-16 22:05
强烈支持,非常感谢哥们
作者: jojwan    时间: 2014-3-17 15:02
走过路过,不能错过
作者: 独领风骚    时间: 2014-3-18 01:22
强烈支持,非常感谢哥们
作者: 张永明    时间: 2014-3-18 15:46
抢沙发~给哥们顶一个
作者: 张永明    时间: 2014-3-18 15:47
想看看这个结果,还不行啊,老提示灌水!
作者: candy    时间: 2014-3-19 16:59
我要看答案
作者: candy    时间: 2014-3-19 17:00
火哥,我要看答案
作者: changpozhi    时间: 2014-3-19 19:20
没看明白!!!!!!
作者: hotsauce    时间: 2014-3-21 19:19
没看到答案。。
作者: 小麟    时间: 2014-3-22 20:03
显然是1啊,这些个题目确实很好的考察了基础知识
作者: ljhis007    时间: 2014-3-23 11:06
-1  应该是他的符号位超神了
作者: ljhis007    时间: 2014-3-23 11:07
ljhis007 发表于 2014-3-23 11:06
-1  应该是他的符号位超神了

写错了    1
作者: seveth    时间: 2014-3-25 21:09
帅呆了,赞一个
作者: deanxuxi    时间: 2014-3-25 21:42
向山外哥学习
作者: 信风    时间: 2014-3-27 11:03
看看 1
作者: 信风    时间: 2014-3-27 11:04
走过路过,不能错过1
作者: zjp    时间: 2014-3-27 17:01
有符号数会先转换成无符号数再比较,所以是1
作者: kindlyde    时间: 2014-3-28 12:15
走过路过,不能错过
作者: ゞ從此消失╭ァ    时间: 2014-3-29 21:23
走过路过,不能错过
作者: nima    时间: 2014-4-3 17:23
1哦,定义了类型
作者: seashell    时间: 2014-4-3 23:29
0,是不是?????????????
作者: power3kv    时间: 2014-4-4 08:41
不解,为什么1L应该是0xffff,1UL是0x0001?
作者: 小丑~~鸭    时间: 2014-4-5 19:03
应该是0吧..........
作者: dragon    时间: 2014-4-5 22:01
汗,那个L和UL竟然不懂什么意思
作者: laiyok    时间: 2014-4-7 16:10
输出1
当有符号数与无符号数运算或比较时,都会自动转换为无符号数
作者: slwope    时间: 2014-4-8 20:26
运行结果:打印0
作者: zyj13    时间: 2014-4-10 13:09
1111111111
作者: zj20115659    时间: 2014-4-10 23:09
强烈支持,非常感谢哥们
作者: xiaowang    时间: 2014-4-11 15:06
232323123123213
作者: xiaoxian    时间: 2014-4-12 12:35
不会,不知道后缀L  UL代表啥
作者: kevin619    时间: 2014-4-12 22:39
强烈支持,非常感谢哥们
作者: 疾风飘流    时间: 2014-4-14 11:28
L和UL的区别
作者: performfh    时间: 2014-4-14 17:42
看看什么情况,,,,,,,,,,
作者: LIEYING    时间: 2014-4-16 13:02
走过路过,不能错过
作者: tension    时间: 2014-4-17 23:27
1  求看详解
作者: tension    时间: 2014-4-17 23:27
1  求看详细解答
作者: sdtclyz    时间: 2014-4-19 09:40
抢沙发~给哥们顶一个1
作者: tigercheng    时间: 2014-4-19 16:13
11111111111
作者: 月影龙魂    时间: 2014-4-20 00:17
这个真的不知道呢,L是什么意思呢?
作者: 月影龙魂    时间: 2014-4-20 00:19
山外メ雲ジ 发表于 2014-2-19 02:26
厉害,不过long型是32位的

为什么-1的LONG是0XFFFFFFFF呢?
作者: VERITAS    时间: 2014-4-20 11:27
这个还真不知道呢,学习了
作者: mhover    时间: 2014-4-20 15:29
真心不会

作者: a594373280    时间: 2014-4-20 16:37
这个不怎么懂,觉得是0吧
作者: 牧马人    时间: 2014-4-20 20:58
答案应该是1,执行If语句
作者: sunny506    时间: 2014-4-21 17:28
看不懂额强烈支持,非常感谢哥们帅呆了,赞一个
作者: 张小亮    时间: 2014-4-21 20:23
果断 1 是他是他就是他
作者: 火龙追月    时间: 2014-4-22 09:03
看看答案啊
作者: 百科全书    时间: 2014-4-22 23:32
javascript:;
作者: 花开无痕    时间: 2014-4-23 19:52
1  走过路过,不能错过走过路过,不能错过走过路过,不能错过
作者: huazhb2014    时间: 2014-4-23 20:39
转换成无符号类型之后-1>1,输出1
作者: lyp521    时间: 2014-4-26 11:44
应该是1,强烈支持,非常感谢哥们
作者: yc_2503    时间: 2014-4-28 12:54
这个应该是1了吧  UL是指无符号的么。。。。
作者: 寻,路者    时间: 2014-4-29 15:58
强烈支持,非常感谢哥们




欢迎光临 野火电子论坛 (https://www.firebbs.cn/) Powered by Discuz! X3.4