八进制文字怎么可能是负数?
How is it possible that an octal literal can be negative?
为什么 n
在
const int n = -0123;
八进制文字?我认为所有八进制文字都必须以 0 开头,而这个不是,因为它以负数开头。
这是我知道的一个小问题,但它让我很困惑!
How is it possible that an octal literal can be negative?
没有负整数文字,只有正整数。这里的文字是 0123,它确实以 0 开头,因此是八进制的。该表达式中的 -
是一元减号运算符。
这是千真万确的。然而,这同样适用于所有整数文字——十进制、十六进制、八进制和二进制。事实上,没有负整数文字。 -1
等表达式将一元减号运算符应用于文字表示的值,这可能涉及隐式类型转换(reference)。
您似乎对文字有点困惑,所以:
简而言之,文字是一种描述类型的方式,可以在代码中文字看到。整数是文字,因为当您在代码中编写时,例如 4
。你可以字面上看到它是数字四,默认情况下数字被解释为int
s,除非它们后面有一个点(.
),或者任何其他有效后缀。
但是,您可以通过编写 4u
来将其解释为无符号数。现在您可以从字面上看到它是被解释为无符号数的数字 4。同样,值 "Hello World"
是一个字符串文字,因为您可以在代码中知道它是字符串 "Hello World
”。另一方面,用户定义 class Person
没有在代码中看到的字面方式。在 C++14 中,您可以创建用户定义的文字,但是对于 Person
,这仍然可以说是没有意义的。标准库在 <chrono>
header,分别定义秒、毫秒和纳秒的 s
、ms
和 ns
等文字。
当写八进制数 -0123
时,您告诉我们将其解释为八进制值,就像 0xFF
按字面解释为十六进制一样。 -
符号只是一种对数字 0123
.
应用一元否定运算符的方法
为什么 n
在
const int n = -0123;
八进制文字?我认为所有八进制文字都必须以 0 开头,而这个不是,因为它以负数开头。
这是我知道的一个小问题,但它让我很困惑!
How is it possible that an octal literal can be negative?
没有负整数文字,只有正整数。这里的文字是 0123,它确实以 0 开头,因此是八进制的。该表达式中的 -
是一元减号运算符。
这是千真万确的。然而,这同样适用于所有整数文字——十进制、十六进制、八进制和二进制。事实上,没有负整数文字。 -1
等表达式将一元减号运算符应用于文字表示的值,这可能涉及隐式类型转换(reference)。
您似乎对文字有点困惑,所以:
简而言之,文字是一种描述类型的方式,可以在代码中文字看到。整数是文字,因为当您在代码中编写时,例如 4
。你可以字面上看到它是数字四,默认情况下数字被解释为int
s,除非它们后面有一个点(.
),或者任何其他有效后缀。
但是,您可以通过编写 4u
来将其解释为无符号数。现在您可以从字面上看到它是被解释为无符号数的数字 4。同样,值 "Hello World"
是一个字符串文字,因为您可以在代码中知道它是字符串 "Hello World
”。另一方面,用户定义 class Person
没有在代码中看到的字面方式。在 C++14 中,您可以创建用户定义的文字,但是对于 Person
,这仍然可以说是没有意义的。标准库在 <chrono>
header,分别定义秒、毫秒和纳秒的 s
、ms
和 ns
等文字。
当写八进制数 -0123
时,您告诉我们将其解释为八进制值,就像 0xFF
按字面解释为十六进制一样。 -
符号只是一种对数字 0123
.