Что делает следующий фрагмент кода (в C)?Что делает следующий фрагмент кода (в C)?
int a = 033;
printf("%d", a + 1);
Что делает следующий фрагмент кода (в C)?Что делает следующий фрагмент кода (в C)?
int a = 033;
printf("%d", a + 1);
033
является восьмеричное целое буквальным и его значение 8*3+3 = 27
. Ваш код печатает 28
.
Целочисленный литерал, начинающийся с 0
, является восьмеричным. Если он начинается с 0x
, он шестнадцатеричный.
Кстати, для примера в ради
int x = 08; //error
ошибка времени компиляции, поскольку 8
не является восьмеричной цифрой.
Рискну дикое предположение и сказать 28
:)
28.
033 представляет собой восьмеричное число в C, поскольку она имеет ведущую «0», и это означает, что его значение в десятичной системе 27.
Итак, 27 + 1 = 28
вот подсказка:
Попробуйте посмотреть на этот пример:
#include<stdio.h>
main()
{
int a = 033;
printf("\nin decimal: %d", a+1);
printf("\nin hex: %x", a+1);
printf("\nin octal: %o", a+1);
}
это приводит:
in decimal: 28
in hex: 1c
in octal: 34
Я думаю, что вы знали ответ – 2010-12-07 13:59:33
Пытались ли вы сами? Обычно это лучший способ узнать. Спросить * почему * это другое дело. – 2010-12-07 14:04:02
благодарит Коди, мне просто нужен «быстрый ответ». Спасибо за все отклики. – Lucas 2010-12-07 14:15:35