c++程序请教

来源:百度知道 编辑:UC知道 时间:2024/06/05 06:20:36
#include<iostream.h>
enum WEEKDAY {Sun,Mon,Tue,Wed,Thu,Fri,Sat};
WEEKDAY yesterdayOf(WEEKDAY today){
if(today==Sun) return Sat;
return today-1;
}
void main()
{
WEEKDAY day;
cout<<endl<<"请输入一个数:";
cin>>day;
cout<<endl<<day<<endl;
}
执行上面的C++程序,为什么回出错!
error C2440: 'return' : cannot convert from 'int' to 'enum WEEKDAY'
Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)
C:\Documents and Settings\Administrator\桌面\ctest\en.cpp(11) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'enum WEEKDAY' (or there is no acceptable conversion)
Error executing cl.exe.

en.obj - 2 error(s), 0 warning(s)

#include<iostream.h>
enum WEEKDAY {Sun,Mon,Tue,Wed,Thu,Fri,Sat};
WEEKDAY yesterdayOf(WEEKDAY today)
{
if(today==Sun) return Sat;
return (WEEKDAY)(today-1); //你定义的是枚举型函数,return 后面的必须是枚举型,所以用(WEEKDAY)强制类型转换.
}
void main()
{
int day;
cout<<endl<<"请输入一个数:";
cin>>day;
cout<<endl<<yesterdayOf((WEEKDAY)day)<<endl;//既然想调用函数就必须把输入的值放入函数中,才能实现调用
}
你写的:cout<<endl<<day<<endl;
是没有函数调用过而输出的值,就算前面的程序没有问题,你最后所输出的day的值和你输入的值是一个数.
你把上面的程序运行下,看是否是你想要的结果.

是不是
return today-1;不能这样用