简单的程序,奇怪的问题!请大家看看!
先把程序贴出来:
#include <iostream>
using namespace std;
class date;//此为类的提前引用声明 //
// time 类
class time
{
public:
time(int,int,int);
void display(date &);
private:
int hour;
int minute;
int sec;
};
//date类
class date
{
public:
date(int ,int,int);//构造函数date声明
friend void time::display (date &);
private:
int month;
int day;
int year;
};
void time::display(date & d){
cout < <d.day < < "- " < <d.month < < "- " < <d.year < <endl;
cout < <hour < < ": " < <minute < < ": " < <sec < <endl;
}
time::time(int h,int m,int s)//time 构造函数
{
hour=h;
minute=m;
sec=s;
}
date::date(int m,int d,int y)
{
month=m;
day=d;
year=y;
}
int main()
{
time t1(23,43,33);
date d1(05,06,2007);//此处奇怪,如果把参数05 换成08或09会出问题//
t1.display(d1);
return 0;
}
程序完了,请大家有兴趣先把程序放在VC里运行一下,
如上所说:date d1(05,06,2007)如果05 换成08或09就会出错,而改成其他任何值都没事,我专门测试过了,出错提示为:error C2041: illegal digit '8 ' for base '8 '
请大家看看.
[解决办法]
...
其实编译器给的错误提示已经说的很清楚了
在C/C++中,以0开头的数编译器会把它当着8进制处理,而八进制数每位只能用0到7表示
[解决办法]
- -
数值的表示方法。
0 开头就是 8进制,
0x 为16进制
默认 10 进制
倒塌