1

分析以下代码... 'int i' 被声明为无符号,但编译器没有给出错误并给出输出为 -121(无符号 int 的范围为正。)请提出原因。

#include<stdio.h>
#include<conio.h>
void main()
{
    clrscr();
    unsigned int i=-121;
    printf("%d",i);
    getch();
}
4

2 回答 2

1

据我所知, %d 用于有符号的 int 值,现在如果要将它与无符号值一起使用,则不能使用 %d,因为它将显示存储在该内存位置的有符号整数值。试试%u。它应该工作。

于 2012-08-27T15:38:39.543 回答
1

根据定义,anunsigned int不能为负数(这就是“无符号”的含义)。如果要在 中存储负值i,则该行应为int i=-121;

维基百科

于 2012-08-27T15:58:12.307 回答