Что делает следующий фрагмент кода (в 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
Вот кий:
- 3-значный с нуля в начале - восьмеричный.
- 2-значное значение с «0x» в начале является шестнадцатеричным.
Попробуйте смотреть на этот пример:
#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
Не связан с StackOverflow