Проблема целочисленного продвижения gcc (v4.1.2 кросс-компилятор) - PullRequest
1 голос
/ 10 декабря 2010

Это тестовый код.

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 Ответ

9 голосов
/ 10 декабря 2010

Это определяется реализацией, является ли char подписанным или неподписанным.

Очевидно, что он подписан на вашем компиляторе x86 и не подписан на вашем компиляторе PowerPC.

Для переносимости используйте unsigned char или signed char, где бы вы ни заботились о подписи.

...