新手求助,零基础入门C语言在第二章类型转换3.18里面的列子
零基础入门C语言在第二章类型转换3.18里面的列子
#include <stdio.h>
void main()
{
int a, b = 322;
float x, y = 8.88;
char c1 = 'k', c2;
a = y;
x = b;
a = c1;
c2 = b;
printf("%d, %f, %d, %c\n", a, x, a, c2);
}不理解为什么“c2”输出结果为“B”
我猜测是25+667=322,其中从0到66正好67个数字,正好66是B,不知道对不对,亲们解析一下,谢谢了
b = 322;c2 = b;
执行后需要将int转换为char,因为c2 = 0x00000142(4字节),因为char为1字节,所以会截断,b = 0x42 = 66 = 'B' 322 的二进制是 101000010
C2是按1字节方式ascii码转字符输出那么我们都知道1个字节是8位, 101000010超过了8位,
很明显就被截断了最前面的1 剩下01000010那么1000010这是二进制数就是十进制的66
66的ascii值的对应字符串就是B 风之残月 发表于 2014-11-19 21:41
b = 322;c2 = b;
执行后需要将int转换为char,因为c2 = 0x00000142(4字节),因为char为1字节,所以会 ...
谢谢亲了 machimilk 发表于 2014-11-19 21:58
322 的二进制是 101000010
C2是按1字节方式ascii码转字符输出那么我们都知道1个字节是8位, 101000010超 ...
谢谢亲了
页:
[1]