为什么此时的整型不能够转化为枚举类型啊????

whuyotc 2008-10-29 04:39:51
#include<iostream>
using namespace std;

typedef enum A{x,y}zz;

int main()
{
/*zz a;
a=(zz)1;*/ //这两句可以使用
//a.x=1;
int c=1;
x=static_cast<zz>(c); //这个时候的整形转化为枚举就不可以
//x=reinpreter_cast<zz>(c); //在vs2008下居然说找不到reinpreter_cast
cout<<y;
return 0;
}
...全文
437 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kenny_Glacier 2008-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 whuyotc 的回复:]
刚才有一个网友提到 有一个x,不能够使用 + - * / 求出 x+1 的值 ,所以 我想出这个馊主意
[/Quote]

int inc(int x)
{
int z = 1, y= ~x;

if(x == -1)
{
return 0;
}
while((int)(y&1) == 0)
{
y=y>>1;
z=z<<1;
z=z|1;
}
return x^z;
}
这个好像可以
帅得不敢出门 2008-10-29
  • 打赏
  • 举报
回复

typedef enum A{x,y}zz;

int main()
{
/*zz a;
a=(zz)1;*/
//a.x=1;
int c=1;
zz test =static_cast <A>(c); //这里的枚举类型是zz
return 0;
}
whuyotc 2008-10-29
  • 打赏
  • 举报
回复
谢谢啊

[Quote=引用 9 楼 anglecloudy 的回复:]
引用 8 楼 dzc8866 的回复:
#include <iostream>
using namespace std;

typedef enum A
{
x=0,
y
}zz;

int main()
{
zz a;

a=(zz)1;

cout < <a < <endl;

return 0;
}

枚举里面的x是不能赋值的,因为它不是变量,感觉就像 1与int 的关系似的,x对于类型zz而言,它是一个值


差不多就是这个意思
[/Quote]
OenAuth.Net 2008-10-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dzc8866 的回复:]
#include <iostream>
using namespace std;

typedef enum A
{
x=0,
y
}zz;

int main()
{
zz a;

a=(zz)1;

cout < <a < <endl;

return 0;
}

枚举里面的x是不能赋值的,因为它不是变量,感觉就像 1与int 的关系似的,x对于类型zz而言,它是一个值
[/Quote]

差不多就是这个意思
dzc8866 2008-10-29
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

typedef enum A
{
x=0,
y
}zz;

int main()
{
zz a;

a=(zz)1;

cout<<a<<endl;

return 0;
}

枚举里面的x是不能赋值的,因为它不是变量,感觉就像 1与int 的关系似的,x对于类型zz而言,它是一个值
whuyotc 2008-10-29
  • 打赏
  • 举报
回复


这样啊

谢谢啊

[Quote=引用 4 楼 kiffa 的回复:]
x 为枚举成员,是一个命名整数常量,非左值,不能赋值,只能在定义时用整型常量表达式进行初始化。

枚举是用户定义类型,你可以重载它的操作符,比如重载“=”来尝试达到你的目的。
[/Quote]
whuyotc 2008-10-29
  • 打赏
  • 举报
回复
刚才有一个网友提到 有一个x,不能够使用 + - * / 求出 x+1 的值 ,所以 我想出这个馊主意
帅得不敢出门 2008-10-29
  • 打赏
  • 举报
回复
可以强制转换
kiffa 2008-10-29
  • 打赏
  • 举报
回复
x 为枚举成员,是一个命名整数常量,非左值,不能赋值,只能在定义时用整型常量表达式进行初始化。

枚举是用户定义类型,你可以重载它的操作符,比如重载“=”来尝试达到你的目的。
zhangqiushui 2008-10-29
  • 打赏
  • 举报
回复
x在你的代码中是枚举的一个类型,不是变量吧
你在 x=static_cast <zz>(c); //这个时候的整形转化为枚举就不可以
这里怎么把它当成了变量?
whuyotc 2008-10-29
  • 打赏
  • 举报
回复
可是我不想在声明的时候定义x的值,
想从外部传递一个值给他



[Quote=引用 1 楼 jjzhk 的回复:]
x=static_cast <zz>(c); //这个时候的整形转化为枚举就不可以
你只能用枚举x,不能改变他的值吧。
[/Quote]
JJZHK 2008-10-29
  • 打赏
  • 举报
回复
x=static_cast <zz>(c); //这个时候的整形转化为枚举就不可以
你只能用枚举x,不能改变他的值吧。

65,211

社区成员

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

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