Для начала несколько вопросов:
- Тип
char
по умолчанию знаковый или нет? А int
?
- Законно ли неявное приведение
(signed char *)
к (char *)
? А то же для int
?
- Сколько бит в
unsigned char
?
- Какое максимальное число гарантированно можно поместить в
int
? А минимальное?
- Тип
long
определённо больше, чем char
, не так ли?
Разумеется, экспериментально искать ответы на эти вопросы с помощью вашего любимого компилятора в вашей любимой системе на вашем любимом компьютере
1) — не лучшая идея. Мы говорим о стандарте языка (С99 и новее).
Если вы уверенно сможете правильно ответить на эти вопросы, тогда эта статья не для вас. В противном случае десять минут, потраченные на её чтение, будут весьма полезны.
Предположу, что вы ответили
- Знаковые оба.
- Законны оба.
- 8.
- 2147483647. -2147483648.
- Конечно, Кэп.
А правильные ответы такие
char
— не регламентируется, int
— знаковый.
- Для
int
— законно, а для char
— нет.
- Не менее 8.
- 32767. -32767
- Вообще говоря, нет.