【问题标题】:Why output is coming infinite loop [closed]为什么输出会无限循环[关闭]
【发布时间】:2016-03-26 13:47:43
【问题描述】:

为什么这个问题会进入无限循环。对我来说,应该是 65001,65002....65535。请详细说明。在此先感谢

#include<>
#include<stdio.h>
#include<conio.h>
int main()
{
 unsigned int i=65000;
 while ( i++ != 0 )
 printf("%d ",i);
 return 0;
 getch();
}

【问题讨论】:

  • 使用uint16_t 而不是unsigned int。顺便说一句getch();:未到达的代码
  • 它进入循环是因为循环中的条件i++ != 0得到满足...int不保证是16位无符号整数。事实上,它是当今计算机中最多的 32 位。请改用uint16_tunsigned short

标签: c int unsigned


【解决方案1】:

在现代系统上,无符号整数至少为 32 位,但您期望的是 16 位。您没有无限循环,但它至少要到 2^32 (4294967296) 才会循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-02
    • 2017-09-08
    • 1970-01-01
    • 2017-05-17
    • 2016-07-27
    • 2018-08-21
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多