枚举类型的简单问题

expresion 2005-08-14 02:16:57
#include<iostream.h>
enum XP{A=0,B=1,C=2,D=3,E=4,F=5,G=6};
XP nextDayOf(XP today){
if(today==A)return G;
return today-1;}
void main(){
int d,k;
cin>>d;
k=nextDayOf(d);
cout<<k<<endl;
int f;
cin>>f;}

为什么return today-1;说我不能转换int与XP

...全文
260 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bugebear3 2005-08-19
  • 打赏
  • 举报
回复
1.强制类型转换

2.XP nextDayOf(XP today){
if(today==A)return G;
return XP(today-1);}//是否应该是today+1,你要的today的next嘛
lxk_cool 2005-08-14
  • 打赏
  • 举报
回复
恩,需要强制转换
megaboy 2005-08-14
  • 打赏
  • 举报
回复
楼主的错误在于,他以为只要today是enum,那么today-1也是enum,但实际上却是int。加个类型转换就OK了。
caocheng8230 2005-08-14
  • 打赏
  • 举报
回复
枚举类型的变量相当于一个常量,在C++中任何一个常量都不能充当左值,也就是说不能对常量赋值,所以也就不能对该枚举类型的变量赋值了.
xiaocai0001 2005-08-14
  • 打赏
  • 举报
回复
嗯,是这个道理。
foochow 2005-08-14
  • 打赏
  • 举报
回复
c++中编译器只能将一个枚举变量转化为int 型,但不能将一个int型自动转化为一个枚举类型!
Unknowm 2005-08-14
  • 打赏
  • 举报
回复
表达式 today-1 将 today 类型提升成为 int,表达式的结果也为int,所以。。。
A-De 2005-08-14
  • 打赏
  • 举报
回复
可以把枚举变量转化为整型,但不能把整型直接赋给枚举变量,
但可以用强制转化:XP a=XP(*)//*为整型
如:
#include<iostream.h>
enum XP{A=0,B=1,C=2,D=3,E=4,F=5,G=6};
XP nextDayOf(XP today){
if(today==A)return G;
return XP(today-1);}
void main(){
int d,k;
cin>>d;
k=nextDayOf(XP(d));
cout<<k<<endl;
int f;
cin>>f;}

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧