9,223,372,036,854,775,808
40,000,000,000,000,000,000
Есть договор. В Европе. Можно как-то обойти?
#include <stdio.h>
int main()
{
int sz = sizeof('A'); // латинское
printf("sz = %d\n", sz);
return 0;
}
char test='A'
на стеке будет 1 байт (+выравнивание). Здесь Си, грубо говоря, проводит преобразование типа — прямо при компиляции. Если написать char test=L'Й'
, сообщит, что преобразование при компиляции ushort→char обрежет результат с 1049 до 25.