gcc(v4.1.2交叉编译器)整数提升问题

时间:2010-12-10 06:57:15

标签: c++ c gcc char powerpc

这是测试代码。

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?

感谢您的回答......

1 个答案:

答案 0 :(得分:9)

char是签名还是未签名,是实现定义的。

显然,它是在您的x86编译器上签名并且在您的PowerPC编译器上未签名。

为了便于携带,请在您关注签名的任何地方使用unsigned charsigned char