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