在do-while循环中使用无符号int

问题描述 投票:0回答:1

我对使用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工作?

感谢任何帮助!

c algorithm loops int do-while
1个回答
0
投票

无符号整数不能包含负数。它很有用,因为它可以存储完整的32位数字(是常规int的两倍),但不能容纳负数,因此当您尝试read

© www.soinside.com 2019 - 2024. All rights reserved.