分析以下代码... 'int i' 被声明为无符号,但编译器没有给出错误并给出输出为 -121(无符号 int 的范围为正。)请提出原因。
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
unsigned int i=-121;
printf("%d",i);
getch();
}
据我所知, %d 用于有符号的 int 值,现在如果要将它与无符号值一起使用,则不能使用 %d,因为它将显示存储在该内存位置的有符号整数值。试试%u。它应该工作。
根据定义,anunsigned int
不能为负数(这就是“无符号”的含义)。如果要在 中存储负值i
,则该行应为int i=-121;
见维基百科