超越大神 发表于 2020-6-4 14:23:16

while

#include <stdio.h>

int main()
{
      signed char i = 0;

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

      return 0;
}
为啥输出是从0到128啊

永恒的蓝色梦想 发表于 2020-6-4 14:26:02

是 0 到 -128 吧。

sunrise085 发表于 2020-6-4 14:30:35

本帖最后由 sunrise085 于 2020-6-4 14:32 编辑

输出的是0到-128,再下一个数就是127了,就不符合条件i<=0了。也就退出了。signed char的范围是-128到127

Corbin 发表于 2020-6-4 14:43:54

#include <stdio.h>

int main()
{
        signed char i = 0;

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


        return 0;
}

我运行这个,输出是从0->-128再从127->0再从0->-128

小甲鱼的铁粉 发表于 2020-6-4 14:51:44

小白求解,这个 signed char i = 0;是啥意思呀{:10_266:}

Darth_EF 发表于 2020-6-4 16:55:19

小甲鱼的铁粉 发表于 2020-6-4 14:51
小白求解,这个 signed char i = 0;是啥意思呀

signed 是带符号的意思。
char类型的大小是一个字节8bit。signed的其中有1bit是代表它是正数还是负数。7bit的只有128种情况出现,正数(0~127)负数(-1~-128)

小甲鱼的铁粉 发表于 2020-6-4 17:24:43

Darth_EF 发表于 2020-6-4 16:55
signed 是带符号的意思。
char类型的大小是一个字节8bit。signed的其中有1bit是代表它是正数还是负数。7 ...

那这个i是int型还是char型的?

405794672 发表于 2020-6-5 11:15:48

因为char只有一个字节。只取这个字节中的数。不管别的字节是啥。到了-128之后,下一个就返回到127了
页: [1]
查看完整版本: while