C++可以通过强制类型转换给枚举变量赋值

#include<iostream>usingnamespacestd;enumweekday{sun=1,mon=2,tue=3,wed=4,thu=5,fri=6,s... #include <iostream>
using namespace std;

enum weekday
{
sun = 1,
mon = 2,
tue = 3,
wed = 4,
thu = 5,
fri = 6,
sat = 7
};

void main(void)
{
weekday day1;
day1 = weekday(11);
cout << day1 << endl;
cin.get();
}

枚举变量的取值被限定在一个有限的范围内,
C++可以通过强制类型转换给枚举变量赋值,
这不就违背了枚举的本意了吗?
通过强制类型转换赋值多少都可以,这枚举变量和普通变量还有什么区别?
新手,刚学C++不理解为什么通过强制类型转换给枚举变量赋值,超出了它的取值范围,为什么程序还正确?
展开
 我来答
absudra5
推荐于2016-11-19
知道答主
回答量:26
采纳率:0%
帮助的人:15.9万
展开全部
枚举变量里面的值都是常量无法更改,主要枚举变量是声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型,就是说他本身其实就是一组常量数组,而像你声明的变量day1其实是整型的,和weekday无关,就算不强制转换也可以直接赋值,不信的话用sizeof查下就知道了.
所以,你说的强制转换什么的就直接不用非要命名为枚举变量没用的,而且枚举都不单独用,而是结合在类或者结构体里面的,只是起到表示判别控制用的
zhangha26
2013-11-12
知道答主
回答量:28
采纳率:0%
帮助的人:12.8万
展开全部
7 二进制 111

11 二进制 1011

day1=weekday(11);

这是取后三位011;

强制类型转换是把多余部分舍去了,若有不足则补0,这句是重点,上面是我猜的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
管道应力分析
2024-12-10
知道答主
回答量:1
采纳率:0%
帮助的人:39
展开全部
你写的是老老式用法,可以作为右值被隐性强制转换成int or char。
至于(11)超了,这个代码你写的是什么啊,没看懂。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永远的回忆2007
2013-11-12 · TA获得超过131个赞
知道答主
回答量:255
采纳率:100%
帮助的人:73.1万
展开全部
有书啊!!!好好看看就可以了!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式