首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问一上c语言的类型转换有关问题

2012-09-20 
请教一下c语言的类型转换问题比如:int a 0x12345678char b (char)a则b的值为多少?c语言有没有定义好

请教一下c语言的类型转换问题
比如:
int a = 0x12345678;
char b= (char)a;

则b的值为多少?c语言有没有定义好的?b的值会不会和编译器和cpu大小端的不同而不同?因为我担心代码在不同的编译器或者cpu结构里的值会不同。

[解决办法]
我查到的ANSI C语言标准里面是这样说的:

当把一有符号整数或无符号整数类型压降转换成比之小的无符号整数类型时,转换后的值按如下方法计算:
以原类型的值作为被除数,以转换后的类型所能存放的最大值加1作为除数,两者相除所得的非负余数即为所要求得的值。

当把一有符号整数或无符号整数类型压降转换成比之小的有符号整数类型时,如果其值不能用新类型表示,则转换后的结果依赖于实现。

关于char类型是否有符号:
C未规定在未使用signed或unsigned修饰时的缺省情况,C把这个决定权留给编译程序。


根据以上规定,b的值是与编译器相关的。

热点排行