以C语言描述类型转换

问题描述 投票:0回答:1

例如,我将char转换为unsigned char时会发生什么情况?或将浮点数转换为整数类型时会发生什么?你们能推荐我一个完整的c参考资料来理解这类事情吗?

c casting char unsigned-char
1个回答
0
投票

[当您投射某些东西时,就数据的存储方式而言,没有任何改变,您所改变的只是编译器评估已存在数据的方式(例如,在变量中)。

所以说你有:

char c = -1;

所以c是常规的“有符号”字符,它由程序存储在一个字节中。

因此,如果您这样做:

unsigned char u = (unsigned char)c;

[现在,您有一个无符号的字符u,您已经告诉程序读取c的值(存储在该字节的某个位置),并将其复制到存储“ u”的字节中,并且ve告诉它“不必担心这是两种略有不同的类型的事实”,因此它不会引发警告或错误。

因此,现在u在其字节中将具有与c相同的确切信息,但由于系统解释为无符号值,如果现在检查u的值,则结果为255,而c的值为-1。它是字节中完全相同的位配置(所有位都“开”即1),这只是解释该数据的两种方式。

[如果您想读一本书的更多细节,因为您提到了C(而不是C ++),并且您正在寻找有关转换的相当基本的信息,那么我实际上推荐的是Kernighan和Ritchie的原始书“ The C Programming Language ”,“这一切的书”。

© www.soinside.com 2019 - 2024. All rights reserved.