首页 > 试题广场 >

运行下面代码,输出的结果是:

[单选题]
运行下面代码,输出的结果是:

  • 1
  • 0
  • -1
  • -2
无符号号整数和有符号整数相加,有符号整数转化为无符号整数,signed int b 变成了一个很大的数,所以a + b是>0的,选A
发表于 2017-08-15 16:27:06 回复(2)
编译器认为:有符号数+无符号数=无符号数
发表于 2021-06-28 20:04:49 回复(0)
有符号数和无符号数进行比较运算时(==,<,>,<=,>=),有符号数隐式转换成了无符号数(即底层的补码不变,但是此数从有符号数变成了无符号数),比如上面 (a+b)>0这个比较运算,a+b=-2。此数进行比较运算时,被当成了无符号数,它远远大于0,所以得到上述结果。
发表于 2017-08-24 20:06:59 回复(4)
无符号整数➕有符号整数,有符号整数转换为无符号整数
发表于 2021-03-09 10:37:03 回复(0)
无符号号整数和有符号整数相加,有符号整数转化为无符号整数,signed int b 变成了一个很大的数,所以a + b是>0的,选A 有符号数的补码与无符号数相加 得出的结果为无符号数 不一定结果很大 加完之后有可能很小
编辑于 2018-11-28 14:39:12 回复(0)
被坑了😔
发表于 2018-08-04 13:00:58 回复(0)
对于32位机器:b=-3+2^31
发表于 2022-02-24 11:31:07 回复(0)
无符号号整数和有符号整数相加,有符号整数转化为无符号整数,signed int b 变成了一个很大的数,所以a + b是>0的,选A
发表于 2020-06-22 01:40:52 回复(0)
不应该是这样吗?-3>0为假,返回0,然后1+0为1故为真,c=1
发表于 2018-10-13 10:29:10 回复(4)
unsigned int a = 1;
    signed int b = -3;
    printf("%u\n",a+b);
这样试试结果,就知道了肯定大于1
发表于 2023-07-11 15:43:42 回复(0)
考察隐式转换
发表于 2021-03-24 23:42:57 回复(0)

这种题意义何在?

发表于 2019-11-06 14:50:07 回复(0)
无符号和有符号的进行运算,会转化为无符号
发表于 2019-07-10 09:15:42 回复(0)
int就是signed int,书上写的时候都是用[signed] int表示signed可以省略
int 默认是 signed int 也就是说是有符号整型,最高位是符号位,数据只占31位
发表于 2018-09-19 21:29:55 回复(0)