suchenxiang 发表于 2022-2-4 11:12:52

我有几个问题,不知道有没有意义

#include <stdio.h>

int main()
{
      signed char i = 0;//这里是带符号的字符型变量,取值范围是0-128是因为小于0的取值范围在asc2中没有字符吗
      while (i <= 0)
      {
                printf("%d", i);
                i = i - 1;
      }

      return 0;
}//在asc2里边0-128取值内既有整型变量也有字符变量,但是这串代码中定义的是字符型变量,按道理说是不是应该只打印出有对应字符的十进制数字
//对c语言学得还不是特别深入,如果不占用各位时间的话,希望能帮我在第5-10行做一个注释

basketmn 发表于 2022-2-4 11:50:02

其实这个代码可以这样写好理解些

#include <stdio.h>

int main()
{
      signed char i = 0;//这里是带符号的字符型变量,取值范围是0-128是因为小于0的取值范围在asc2中没有字符吗
      while (i >=0)
      {
                printf("%d ", i);
                i = i +1;
      }
        //printf("\n%d",sizeof(signed char));
      return 0;
    }
char 和 int只是指变量的宽度,比如0,char就是00000000,int 是00000000,00000000,00000000,00000000,所以无论是什么类型,%d都是打的这个数字,只不过char 超过255会溢出回到0
第二个问题,你的格式是%d,肯定是数字,如果是%c的话,就是字符

傻眼貓咪 发表于 2022-2-4 12:54:57

本帖最后由 傻眼貓咪 于 2022-2-4 12:58 编辑

注:虽说 ASCII 有 128 个字符(EASCII 256 个字符)但不是所有能打印。比如你的代码如果想打印 ASCII 编码 0~127 的字符,只有 32 ~ 126 可以打印,其它都是些空字符或控制符。
至於 编码 128~255 的字符(unsigned char),能否打印也视编译器而定,不是所有编译器能打印。

suchenxiang 发表于 2022-2-5 01:08:43

傻眼貓咪 发表于 2022-2-4 12:54
注:虽说 ASCII 有 128 个字符(EASCII 256 个字符)但不是所有能打印。比如你的代码如果想打印 ASCII 编码 ...

谢谢
页: [1]
查看完整版本: 我有几个问题,不知道有没有意义