【发布时间】:2016-05-27 06:20:31
【问题描述】:
我有以下代码:
int main()
{
int i;
unsigned int j;
printf("Type a number: ");
scanf("%d", &i);
j = i;
if (________)
{
printf("Negative!\n");
}
return 0;
}
为了检查无符号变量“j”是否包含负数,我将在 if 语句中放入什么?
【问题讨论】:
-
根据定义,
unsigned int不包含负数。 -
检查等价的负
int值只需要检查最高位,如果是1,那么该无符号数将表示为负int值——但你会在进行任何此类转换之前,必须进一步检查该值是否不超过INT_MIN,否则您需要扩展为 long 值。 -
你的答案是
if (i >> 31 & 1) printf ("value is negative\n");
标签: c unsigned-integer