这是测试代码。
char ch = 0xff;
int i = ch;
printf("%d\n", i);
在i386 gcc-4.4.5中,输出为-1 。 但在powerpc-e300c3-linux-gnu-gcc-4.1.2(MPC8315交叉编译器)中,输出为255 。
有什么问题? 为什么gcc-4.1.2输出是255?
感谢您的回答......
答案 0 :(得分:9)
是char
是签名还是未签名,是实现定义的。
显然,它是在您的x86编译器上签名并且在您的PowerPC编译器上未签名。
为了便于携带,请在您关注签名的任何地方使用unsigned char
或signed char
。