В инициализаторе переменной C
char C = '\1';
используется восьмеричная escape-последовательность. То есть цифры после обратного знака sh считаются восьмеричным представлением числа.
Количество цифр в восьмеричной escape-последовательности не должно превышать 3, а допустимые цифры 0-7 включительно .
Например, это объявление
char C = '\11';
инициализирует переменную C
значением 9
.
Таким образом, выражение используется в вызове printf
printf("%d", I * C);
эквивалентно
printf("%d", -3 * 1);
И на выходе будет -3
.
Вместо восьмеричной восьмеричной последовательности вы можете использовать шестнадцатеричную escape-последовательность, такую как
char C = '\x1';
это объявление эквивалентно предыдущему объявлению переменной C
подобно
char C = '\1';
Если инициализировать переменную как
char C = '\x11';
, тогда переменная C
получит значение 17
.
Количество цифр в восьмеричной escape-последовательности не должно превышать 3, а допустимые цифры - 0-7 включительно.
Что касается декларация, подобная этой
char C = '1';
затем переменная C
инициализируется значением внутреннего представления символа '1'
. Например, если используется кодировка ASCII, переменная C
инициализируется значением 49
. Если используется кодировка EBCDI C, то переменная C
инициализируется значением 241
.