Gib*_*bbs 61 c literals octal language-lawyer
我读过这个.它是C++中的八进制和Java中的十进制.但没有关于C的描述?
如果0是八进制还是十进制,它会有什么不同吗?这是我的采访者提出的问题.我说没有,我解释说无论是八进制还是十进制,它始终为0.
然后他问为什么它被认为是C++中的八进制和Java中的十进制.我说这是标准.请告诉我C中的内容是什么?会有什么不同吗?为什么它们在不同标准上有所不同?
jua*_*nza 92
它没什么区别,但正式的整数常量0
是C中的八进制.从C99和C11标准来看,6.4.4.1整数常量
integer-constant:
decimal-constant integer-suffix opt
八进制常量 integer-suffix opt
十六进制常量 integer-suffix opt十进制常数:
非零位数
十进制恒定 位八进制常数:
0
八进制常数 八进制数十六进制常数:
...
...
Yu *_*Hao 60
八.
C11§6.4.4.1整数常数
Run Code Online (Sandbox Code Playgroud)octal-constant: 0 octal-constant octal-digit
从C89§3.1.3.2开始就是如此.
Syl*_*oux 29
然后他问为什么它被认为是C++中的八进制和Java中的十进制
为了完整起见,值得一提的是Java规范.从Java语言规范3.10.1:
Run Code Online (Sandbox Code Playgroud)DecimalNumeral: 0 NonZeroDigit Digitsopt NonZeroDigit Underscores Digits
十进制数字是单个ASCII数字0,表示整数零,或者由1到9的ASCII数字组成,可选地后跟一个或多个从0到9的ASCII数字,其中散布着下划线,表示正整数.
Run Code Online (Sandbox Code Playgroud)OctalNumeral: 0 OctalDigits 0 Underscores OctalDigits
八进制数字由ASCII数字0后跟一个或多个散布有下划线的ASCII数字0到7组成,并且可以表示正整数,零整数或负整数.
如您所见,裸0
视为十进制.而前面的任何(非空)数字序列0
被视为八进制.
有趣的是,从那个语法:
0
是小数00
八进制sta*_*ify 11
这是一个八进制.参见6.4.4.1 Integer constants
N1570草案部分:
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
Run Code Online (Sandbox Code Playgroud)
也:
- 十进制常量以非零数字开头,由一系列十进制数字组成.八进制常量由前缀0组成,可选地后跟一个数字0到7的序列.十六进制常量由前缀0x或0X后跟一个十进制数字序列和字母a(或A)到f(或F)分别由值10到15组成.
Vla*_*cow 10
从C标准(6.4.4.1整数常量)
octal-constant:
0
octal-constant octal-digit
Run Code Online (Sandbox Code Playgroud)
实际上零没有任何差别,因为零是八进制,十进制和十六进制数的公共数字.只有当一个数字除了单个(前导)零之外还有其他数字时,它才有意义.
考虑到没有十进制,八进制或十六进制这样的整数类型.
归档时间: |
|
查看次数: |
6814 次 |
最近记录: |