鱼C论坛

 找回密码
 立即注册
查看: 682|回复: 3

[已解决]我有几个问题,不知道有没有意义

[复制链接]
发表于 2022-2-4 11:12:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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行做一个注释
最佳答案
2022-2-4 12:54:57
本帖最后由 傻眼貓咪 于 2022-2-4 12:58 编辑

注:虽说 ASCII 有 128 个字符(EASCII 256 个字符)但不是所有能打印。比如你的代码如果想打印 ASCII 编码 0~127 的字符,只有 32 ~ 126 可以打印,其它都是些空字符或控制符。
至於 编码 128~255 的字符(unsigned char),能否打印也视编译器而定,不是所有编译器能打印。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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的话,就是字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-4 12:54:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻眼貓咪 于 2022-2-4 12:58 编辑

注:虽说 ASCII 有 128 个字符(EASCII 256 个字符)但不是所有能打印。比如你的代码如果想打印 ASCII 编码 0~127 的字符,只有 32 ~ 126 可以打印,其它都是些空字符或控制符。
至於 编码 128~255 的字符(unsigned char),能否打印也视编译器而定,不是所有编译器能打印。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-2-5 01:08:43 | 显示全部楼层
傻眼貓咪 发表于 2022-2-4 12:54
注:虽说 ASCII 有 128 个字符(EASCII 256 个字符)但不是所有能打印。比如你的代码如果想打印 ASCII 编码 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-6 14:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表