星辰皇 发表于 2023-9-15 10:48:49

不明白为什么不是打印0到负无穷呢?

不明白:为什么会打印0~-128?而不是0到负无穷呢?
#include <stdio.h>

int main()
{
      signed char i = 0;

      while (i <= 0)
      {
                printf("%d", i);
                i = i - 1;
      }

      return 0;
}

isdkz 发表于 2023-9-15 10:48:54

这是因为signed char类型的取值范围是-128到127,当i达到-128时,再减1就会发生signed char类型的溢出,变成了127,然后i就会一直循环在-128和127之间。所以会一直打印-128到127范围内的数值。如果你想打印0到负无穷,可以将signed char类型改成int类型,int类型的取值范围是-2147483648到2147483647,可以满足你的需求。
页: [1]
查看完整版本: 不明白为什么不是打印0到负无穷呢?