这是测试代码.
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?
感谢您的回答...
无论char是签名还是未签名,它都是实现定义的.
显然,它是在您的x86编译器上签名的,并且在您的PowerPC编译器上未签名.
为了便于携带,使用unsigned char或signed char在任何您关心签名的地方.