返回信息流#include<iostream>
using namespace std;
int main()
{
enum flag {a=3,b=9};
flag f1=flag(99);
cout<<f1;
}
《The c++ programing language》里说flag这个枚举类型的范围是0到15,但是编译却可以输出f1的值为99,为什么?
这是一条镜像帖。来源:北邮人论坛 / cpp / #46718同步于 2010/11/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
新手请教一个C++的小问题!
abkdnh
2010/11/23镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
确实有些诡异。。。
enum f1=99;//这个明显编译比不能通过的
enum f1=flag(99); //编译通过了而且还能正常输出
可能原因主要在上面两者的区别吧,具体不知道
【 在 abkdnh (GC|宇智波止水) 的大作中提到: 】
: #include<iostream>
: using namespace std;
: int main()
: ...................
【 在 Thinker 的大作中提到: 】
: 确实有些诡异。。。
: enum f1=99;//这个明显编译比不能通过的
: enum f1=flag(99); //编译通过了而且还能正常输出
: ...................
会不会是编译器的差异呢?
额,这个不是15的上限吧,具体多少忘了
f1=99; //不允许这样隐式转换的
【 在 Thinker 的大作中提到: 】
: 确实有些诡异。。。
: enum f1=99;//这个明显编译比不能通过的
: enum f1=flag(99); //编译通过了而且还能正常输出
: ...................
【 在 awds888 的大作中提到: 】
: 额,这个不是15的上限吧,具体多少忘了
: f1=99; //不允许这样隐式转换的
: 【 在 Thinker 的大作中提到: 】
: ...................
不是0到2~k-1么?