C ++:日期和八进制常量

时间:2013-10-08 08:49:16

标签: c++

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

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

3 个答案:

答案 0 :(得分:1)

任何以0开头的文字都被解释为八进制,而八进制8没有意义(有效数字为07)。那就像拥有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前缀表示八进制。