Почему 16-битный компилятор выдает ошибку для объявления unnsned char []?

Вот код:

unsigned char A[] = { 'a', 'b', 12, 256, 'c', 28 };

он хорошо компилируется в VS с использованием x64-компилятора. Но 16-битный компилятор выдает какую-то ошибку, и, к сожалению, я не знаю, что это за ошибка. Вопрос в том, почему 16-битная ошибка в этом случае. Вы можете это объяснить?

-1

Решение

char всегда является байтом, поэтому не имеет значения, является ли ваша платформа 16-битными или 64-битными словами (хотя, если вы используете систему с CHAR_BIT != 8, мы поговорим!). Что, вероятно, более важно, так это то, что ваш 16-битный компилятор (да, я предполагаю, что Turbo C ++) относится к 1980-м годам, за десять лет до первого стандарт издание C ++, так что в целом он ведет себя немного иначе.

В этом случае он менее терпим к значению 256, который на самом деле больше, чем может быть сохранен в char (подписано или иным образом). Я бы сказал, что это «неправильно», но трудно не соответствовать стандарту, которого не было в то время. Turbo C ++ в значительной степени свободен, чтобы делать свое дело, в этом смысле — это не на самом деле C ++, так, как мы понимаем термин «C ++» сегодня.

Я ожидал бы, что ваш компилятор Visual Studio выдаст предупреждение компилятора … и затем инициализирует unsigned char с помощью оберточного, как то, как работают беззнаковые значения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector