Что делает следующий фрагмент кода (в C) печатает?

StackOverflow https://stackoverflow.com/questions/4377343

  •  09-10-2019
  •  | 
  •  

Вопрос

Что делает следующий фрагмент кода (в 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top