#include <stdio.h>
int main()
{
char c = 255;
if (c > 128)
{
printf("This is unsigned number %d\n", c);
}
else
{
printf("This is signed number %d\n", c);
}
}
Что происходит в этом случае, когда мы инициализируем подписанный символ, который имеет диапазон от -127 до 128 с 255? Это не обертывается, потому что это неопределенное поведение, но что на самом деле происходит?Ошибка преобразования типа в C
Я получаю -1 результат, но как и почему?
Вы спрашиваете, что происходит в неопределенном поведении? Шутки в сторону? –
Это не неопределенное поведение, но реализация определена. Так что это зависит от вашего компилятора. –
@JensGustedt передает char на% d, хорошо? –