char型的理解

C语言中的字符型数据(char型)表示:字母、符号和一些动作(如:回车)。它占用存储单元1个字节也就是8位,如果把它看成是有符号型char类数据,它的数据范围是(-128—127),如果看成无符号型char类数据,那他的数据范围是(0-255);下面我们对char类数据做个更加全面的了解。

1、如何声明

1.1 字符数据声明定义必须使用单引号,比如下面

char num='a';

解释:把字符常量a赋给变量num;

char sum='\a';

解释:把字符常量\a赋予变量sum;\a表示计算机响铃一次;

1.2 我们知道ASCII标准把我们常用的字符都进行了标准化,每一个字符对应一个整数值,当然这个整数值分别可以使用八进制、十六进制或十进制表示。比如下面

char dur='A';等同于int dur=0101;等同于int dur=0x41;等同于char dur=65;

备注:0101是整型数八进制的书写,0x41是整型数十六进制的书写。因为上面四种最后打印的都是字符A,所以我们可以说她们相同的表示,但是我们按照标准的规范声明是“char dur ='A';”这一点大家要注意。

同时上面四种声明存储的形式不一样,但最后输出是一样的,说明数据的打印输出和格式符号%d、%c有关,而与是十进制、十六进制或字符型存储无关。

2、char型数据的输出和什么有关(printf)

2.1字符型数据的输出格式符是%c;如果我们想把字符所对应的八进制或十六进制直接输出,怎么办?我们可以把格式符换成%o或%x(%#o或%#x)最后输出是一样的,说明数据的打印输出和格式符号%d、%c有关,而与是十进制、十六进制或字符型存储无关。

2、char型数据的输出(printf)

2.1字符型数据的输出格式符是%c;如果我们想把字符所对应的八进制或十六进制直接输出,怎么办?为此C语言做了一个“转义序列符”,我们可以理解字符使用的快捷键。

#include<stdio.h>

int main(void)     

    {         

printf("gramps sez,\''a \\ is a backslash.\''\n");     

   getchar( );       

 return 0; 

        }        这个程序的输出结果是:gramps sez,"a\ is a backslash."
下面我们来分析这条程序:printf("gramps sez,\''a \\ is a backslash.\''\n");

它使用的转义序列符有:\''和\\(\''输出双引号,而\\输出符号\)所以从这条程序可以看出,需要使用这些符号,通过转义序列符可以直接输出,很方便,如果不这样,那只哟通过声明变量,把字符赋给变量然后再输出,通过格式符%c;这样肯定麻烦的多。

总之来说字符数据除了有ASCII规定的还有C语言的转义序列符,根据需要选择合适的书写。


ASCII
原文章链接https://m.toutiao.com/i6801121978531971596/

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据秃头族

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值