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

1 c c++ gcc powerpc char

这是测试代码.

char ch = 0xff;
int i = ch;
printf("%d\n", i);
Run Code Online (Sandbox Code Playgroud)

在i386 gcc-4.4.5中,输出为-1.但是在powerpc-e300c3-linux-gnu-gcc-4.1.2(MPC8315交叉编译器)中,输出为255.

怎么了?为什么gcc-4.1.2输出是255?

感谢您的回答...

Jam*_*lis 9

无论char是签名还是未签名,它都是实现定义的.

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

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