博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
char的本质
阅读量:5061 次
发布时间:2019-06-12

本文共 1054 字,大约阅读时间需要 3 分钟。

我们知道,在C/C++语言中,char 也是一种普通的scalable 类型,除了字长之外,它与shortintlong 这些类型没有本质区别,只不过被大家习惯用来表示字符和字符串而已。(或许当年该把这个类型叫做“byte”,然后现在就可以根据实际情况,使用byte short 来把char 通过typedef 定义出来,这样更合适些)于是,使用”%d”或者”%x”打印一个字符,便能得出它的10 进制或16 进制的ASCII 码值;反过来,使用”%c”打印一个整数,便可以看到它所对应的ASCII字符。以下程序段把所有可见字符的ASCII 码对照表打印到屏幕上(这里采用printf,注意”#”与”%X”合用时自动为16 进制数增加”0X”前缀):

for(int i = 32; i < 127; i++)

{

printf("[ %c ]: %3d 0x%#04X\n", i, i, i);

}

把占用字节小的类型赋给占用字节大的类型时,会有符号位扩展问题,比如把char赋给int时,应当区别是1扩展还是0扩展。

示例1.1

void f(unsigned char v)

{

    char c = v;

    unsigned char uc = v;

    unsigned int uia = c, uib = uc;

    int i1 = c, i2 = uc;

    printf("----------------\n");

    printf("%%c: %c, %c\n", c, uc);

    printf("%%X: %X, %X\n", c, uc);

    printf("%%u: %u, %u\n", uia, uib);

    printf("%%d: %d, %d\n", i1, i2);

}

    f(0x80);

    f(0x7F);

output:

%c: €,

%X: FFFFFF80

%u: 42949671

%d: -128, 12

------------

%c: ,

%X: 7F, 7F

%u: 127, 127

%d: 127, 127

原文:

http://baike.baidu.com/view/1295144.htm

http://www.cnblogs.com/qytan36/archive/2010/09/27/1836569.html

转载于:https://www.cnblogs.com/mydomain/archive/2012/11/15/2772469.html

你可能感兴趣的文章
zoj 2165 Red and Black
查看>>
关系数据库(RDBMS)小记
查看>>
[转载]OpenGL矩阵变换 一篇很好的译文
查看>>
初级算法——盒子取球方法(蓝桥杯)
查看>>
“由于这台计算机没有终端服务器客户端访问许可证”解决方案
查看>>
IE每次关闭都提示IE已停止工作
查看>>
个人复习JavaScript重点(总结一)
查看>>
(摘)C#生成随机数的三种方法
查看>>
CF-478C
查看>>
我的2011就这样混掉了
查看>>
2018-2019-2 《网络对抗技术》Exp2 后门原理与实践 Week3 20165326
查看>>
项目失败的若干征兆
查看>>
分布式锁(Zookeeper实现)
查看>>
《SQL Server 2008从入门到精通》--20180629
查看>>
JavaScript -- 知识点汇总
查看>>
html5 的头部
查看>>
一个计时器, 点击按钮 让他 停一会, 5s后继续自动运行
查看>>
UVA - 1585 Score
查看>>
漫画算法:深度优先遍历 和 广度优先遍历
查看>>
20181207作业-郭恩赐
查看>>