首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

简单的程序,奇怪的有关问题!请大家看看

2012-02-28 
简单的程序,奇怪的问题!请大家看看!先把程序贴出来:#include iostreamusingnamespacestdclassdate//此

简单的程序,奇怪的问题!请大家看看!
先把程序贴出来:


#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 进制

倒塌

热点排行