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