我有几个问题,不知道有没有意义
#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行做一个注释 其实这个代码可以这样写好理解些
#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:58 编辑
注:虽说 ASCII 有 128 个字符(EASCII 256 个字符)但不是所有能打印。比如你的代码如果想打印 ASCII 编码 0~127 的字符,只有 32 ~ 126 可以打印,其它都是些空字符或控制符。
至於 编码 128~255 的字符(unsigned char),能否打印也视编译器而定,不是所有编译器能打印。 傻眼貓咪 发表于 2022-2-4 12:54
注:虽说 ASCII 有 128 个字符(EASCII 256 个字符)但不是所有能打印。比如你的代码如果想打印 ASCII 编码 ...
谢谢
页:
[1]