【发布时间】:2020-03-19 14:40:11
【问题描述】:
我是 c 编码的新手,我一直在尝试用无符号整数来解决问题。这是我的代码:
#include <stdio.h>
int main(void)
{
unsigned int hours;
do
{
printf("Number of hours you spend sleeping a day: ");
scanf(" %u", &hours);
}
while(hours < 0);
printf("\nYour number is %u", hours);
}
但是,当我运行代码并使用 (-1) 时,它不会像应有的那样再次询问问题,而是打印出(您的号码是 4294967295)。如果我将 unsigned int 更改为普通 int,则代码可以正常工作。有没有办法可以更改我的代码以使 unsigned int 工作?
感谢任何帮助!
【问题讨论】:
-
无符号整数不能有负值。这就是使用无符号变量的重点:只有正数,但你会得到一个“更大范围”的值(即最大的数字是比更大的有符号整数大 2 的幂)
-
可能有一些方法可以进行时髦的铸造以使其发挥作用,但这会令人困惑且毫无意义。你有理由不只使用
int吗? -
我使用 unsigned int 的原因是因为我正在研究的一个问题需要我使用它
-
while(mins
标签: c algorithm loops int do-while