1

所以我现在的问题是当我编译我的代码时,当我尝试解析我的一个 Date 对象的年份值“08”时,我得到错误“八进制常量中的无效数字”。显然发生这种情况的原因是因为它是十六进制或其他东西。现在我将 Year 变量存储为 int 类型,那么存储 Year 变量的最佳数据类型是什么,以防止发生此错误?

在你问之前,不,我不能将 Year 变量存储为四位数(即“2008”)而不是两位数(即“08”),因为我现在需要从中读取输入数据的文件具有年份存储为两位数。

4

3 回答 3

1

任何以开头的文字都0被解释为八进制,而八进制8没有意义(有效数字是0through 7)。那就像拥有0xG. 在 base 8 中,符号8没有意义,就像在 base 16 中一样,G没有意义。

只需将其存储为8.

该值应该与表示分离。如果您想将其显示为08,那很好,但您应该将其存储为8(假设2008是不可能的)。

于 2013-10-08T08:51:08.400 回答
1

0以八进制开头的整数。例如010与十进制相同8。但是08无效,因为8它不是有效的八进制数字。

如果您需要将其用作整数,请8改用。8输出为两位数或存储输入的两位数的方法不止一种。

于 2013-10-08T08:54:21.380 回答
0

防止编译器将您的年份视为八进制(然后抱怨它对于基数 8 来说太大)的最佳方法是避免编写

const int year = 08;

但写

const int year = 8;

反而。0前缀表示八进制。

于 2013-10-08T08:53:29.107 回答