读书人

有关问题

发布时间: 2012-03-06 20:47:55 作者: rapoo

问题
main()
{
char b[]= "hello,you ";
b[5]=0;
printf( "%s\n ",b);
}
程序运行的结果是hello,为什么?

[解决办法]
强制转换不等于把int型的0转换成其对应的ASCII码值,如果要是这样想的话那double转换成char该怎么个转法?
其实称其为强制或许都有些勉强,“隐式转换”这样说应该更具代表性一些

C++中数据类型的内存占用大小不一,例如int是4字节而char由各编译器决定,这就造成了要把一种尺寸(即内存占用大小)的数据存入另一种尺寸的数据空间的操作必须要进行尺寸重载(引用汇编中的说法),int型的0转成char型依旧是数值上的0,不会变成 '0 '的ASCII码值即30h,区别在于, 数值占用的内存空间从4字节变成了其他大小(存储器尺寸被重载了)

读书人网 >C语言

热点推荐