source

0은 8진수입니까, 아니면 C의 10진수입니까?

goodcode 2022. 8. 1. 22:44
반응형

0은 8진수입니까, 아니면 C의 10진수입니까?

나는 이것을 읽은 적이 있다.C++로 8진수, Java로 10진수입니다.하지만 C에 대한 설명은 없나요?

0이 8진수인지 10진수인지에 따라 차이가 있나요?이것은 제 면접관의 질문입니다.나는 아니라고 했고 8진수든 10진수든 상관없이 항상 0이라고 설명했다.

그리고 왜 C++에서는 8진수, Java에서는 10진수로 간주되는지를 물었다.이게 기준이라고 했잖아요.C로 된 것이 무엇인지 알려주세요.그게 무슨 차이가 있나요?표준이 다른 이유는 무엇입니까?

, 이이 it it it, 식식 it it it it it it it it it it it it it it it it it it it it it it it it it it.0는 C의 8진수입니다.C99 및 C11 규격에 따르면 6.4.4.1 정수

integergent-module:
     정수로opt 변환되었다
     정수로opt 변환되었다
     - 16진수정수로opt 변환되었다

십진법:
     입니다.
     표시

8진수:
    0
     8진수

16진수 값:

옥탈

C11 § 6.4.4.1 정수

octal-constant:
    0
    octal-constant octal-digit

이것은 C89 3 3.1.3.2 이후부터 사실입니다.

그리고 그는 왜 C++에서는 8진수, Java에서는 10진수로 간주되는지를 물었다.

완성도를 높이기 위해 Java 사양도 언급할 가치가 있습니다.Java Language Specification 3.10.1부터:

DecimalNumeral:
    0
    NonZeroDigit Digitsopt
    NonZeroDigit Underscores Digits

10 진수는 정수 0을 나타내는 단일 ASCII 숫자0 또는 1 ~9 의 ASCII 숫자 뒤에 임의로 밑줄이 붙은1개 또는 복수의 ASCII 숫자로 구성되어 정의 정수는 정의 정수를 나타냅니다.

OctalNumeral:
    0 OctalDigits
    0 Underscores OctalDigits

8진수는 ASCII 숫자0 뒤에 밑줄로 둘러싸인1개 또는 복수의 ASCII 숫자0 ~ 7로 구성되어 정의, 0 또는 음의 정수를 나타낼 수 있습니다.

바와 맨몸의010진수로 간주됩니다.단, 앞에 이어지는 임의의 (공백이 아닌) 자리수열은08진수로 간주됩니다.

흥미롭게도, 그 문법에 따르면:

  • 0 decimal10 수수
  • 부토 00입니다.

C 표준으로부터 (6.4.4.1 정수 상수)

octal-constant:
0
octal-constant octal-digit

0은 8진수, 10진수 및 16진수 숫자의 공통 자리이기 때문에 0에 대한 차이는 없습니다.이는 숫자에 단일(선행) 0이 아닌 다른 자릿수가 있는 경우에만 의미가 있습니다.

10진수, 8진수, 16진수 등의 정수형은 존재하지 않는 것을 고려해 주십시오.

8진법이에요.'섹션6.4.4.1 Integer constantsN1570 드래프트의 경우:

      integer-constant:
            decimal-constant integer-suffixopt
            octal-constant integer-suffixopt
            hexadecimal-constant integer-suffixopt
      decimal-constant:
            nonzero-digit
            decimal-constant digit
      octal-constant:
            0
            octal-constant octal-digit
      hexadecimal-constant:
            hexadecimal-prefix hexadecimal-digit
            hexadecimal-constant hexadecimal-digit
      hexadecimal-prefix: one of
            0x   0X
      nonzero-digit: one of
            1   2   3   4   5   6   7   8   9
      octal-digit: one of
            0   1   2   3   4   5   6   7
      hexadecimal-digit: one of
            0   1   2   3   4   5   6   7   8   9
            a   b   c   d   e   f
            A   B   C   D   E   F
      integer-suffix:
            unsigned-suffix long-suffixopt
            unsigned-suffix long-long-suffix
            long-suffix unsigned-suffixopt
            long-long-suffix unsigned-suffixopt
      unsigned-suffix: one of
            u   U
      long-suffix: one of
            l   L
      long-long-suffix: one of
            ll   LL

기타:

  1. 10진수 상수는 0이 아닌 숫자로 시작되며 일련의 10진수로 구성됩니다.8진수 상수는 프리픽스0 뒤에 임의로 숫자0 ~ 7 의 시퀀스만으로 구성됩니다.16진수 상수는 프리픽스 0x 또는 0X 뒤에 이어지는 10진수 시퀀스와 각각 값이 10 ~15인 문자 a(또는 A)~f(또는 F)로 구성됩니다.

컴파일러의 실장에 따라 다르다고 생각합니다.소스 코드를 보고 "0" 상수를 8진수로 플래그 지정할지 여부를 결정해야 합니다.옥탈 이외의 이유는 다음과 같이 정의할 수 있습니다.옥탈에는 '0' 프리픽스가 붙습니다.단, 접두사는 없습니다.상수가 00일 경우 IS 8진수 - "8진수 제로" :)

언급URL : https://stackoverflow.com/questions/26625311/is-0-an-octal-or-a-decimal-in-c

반응형