所以我现在的问题是当我编译我的代码时,当我尝试解析我的一个 Date 对象的年份值“08”时,我得到错误“八进制常量中的无效数字”。显然发生这种情况的原因是因为它是十六进制或其他东西。现在我将 Year 变量存储为 int 类型,那么存储 Year 变量的最佳数据类型是什么,以防止发生此错误?
在你问之前,不,我不能将 Year 变量存储为四位数(即“2008”)而不是两位数(即“08”),因为我现在需要从中读取输入数据的文件具有年份存储为两位数。
所以我现在的问题是当我编译我的代码时,当我尝试解析我的一个 Date 对象的年份值“08”时,我得到错误“八进制常量中的无效数字”。显然发生这种情况的原因是因为它是十六进制或其他东西。现在我将 Year 变量存储为 int 类型,那么存储 Year 变量的最佳数据类型是什么,以防止发生此错误?
在你问之前,不,我不能将 Year 变量存储为四位数(即“2008”)而不是两位数(即“08”),因为我现在需要从中读取输入数据的文件具有年份存储为两位数。
任何以开头的文字都0
被解释为八进制,而八进制8
没有意义(有效数字是0
through 7
)。那就像拥有0xG
. 在 base 8 中,符号8
没有意义,就像在 base 16 中一样,G
没有意义。
只需将其存储为8
.
该值应该与表示分离。如果您想将其显示为08
,那很好,但您应该将其存储为8
(假设2008
是不可能的)。
0
以八进制开头的整数。例如010
与十进制相同8
。但是08
无效,因为8
它不是有效的八进制数字。
如果您需要将其用作整数,请8
改用。8
输出为两位数或存储输入的两位数的方法不止一种。
防止编译器将您的年份视为八进制(然后抱怨它对于基数 8 来说太大)的最佳方法是避免编写
const int year = 08;
但写
const int year = 8;
反而。0
前缀表示八进制。