在字符变量中存储字符常量

时间:2010-10-14 13:21:43

标签: c

char ch = 'a';

这里ch是一个字符变量,所以它的大小是一个字节。 'a'是一个字符常量,因此它的ASCII值将被存储为2字节。但是如何才能在1字节变量中存储2字节值?

4 个答案:

答案 0 :(得分:4)

字符文字(例如'a')将被视为整数文字,例如970x61。 C编译器倾向于希望每个整数都存储在int中,除非另有说明,因此sizeof('a')可能是sizeof(int)

但是,您应该注意到'a'的值小于127,因此它可以存储在char中(最大值为127或255,具体取决于它是否已签名或未签名)你的编译器)。这与能够:

相同
unsigned long long x = 0;
unsigned int y = x;

y是从类型大于x类型的y分配的,但x的值恰好在y的范围内可以表示,所以当最高位(全0)被切断时,没有数据丢失。

答案 1 :(得分:2)

与其他人的回应一样,可以在this question找到更多相关信息。

答案 2 :(得分:0)

你提出了一个很好的问题。我建议你做两件事来满足自己,有足够的空间存放角色:

1)查看getchar()的文档,你会看到它返回一个int,因此有足够的空间存储一个字符的值。理解声明的基础是很好的,但是如果你宣布char cTestChar = 'c';有足够的空间来存储声明。

2)编译时生成程序集列表。 Visual C / C ++支持这个以及gcc。 gcc使用-Wa选项生成程序集输出。地图将显示字符类型的分配。

答案 3 :(得分:-2)

一个字符常量只有一个字节...

相关问题