谭浩强书上说枚举变量不能直接赋值整数?

来源:百度知道 编辑:UC知道 时间:2024/06/15 10:07:24
#include <stdio.h>

enum weekday{
sun=7,
mon=1,
tue,
wed,
thu,
fri,
sat,
};

main()
{
enum weekday workday1,workday2;
workday1=2;
workday2=10;
printf("workday1=%d\n",workday1);
printf("workday2=%d\n",workday2);
return 0;
}
谭浩强《C语言程序设计》(第三版)312页上说不能把一个整数直接赋值给枚举变量,他举的例子基本上如上。但上面的例子直接把整数赋值给枚举变量,编译能过(Gcc下),也能打印出所赋的值。信书?还是我整错了?
补充一:敲错了,是313页倒数14行。
补充二:但一本老外编的书又说可以这样赋值,《C语言程序设计现代方法》246页。该信老外的?
补充三:是Gcc下编译的,输出结果为workday1=2,workday2=10。

在很多编译器眼里, enum类型跟short就是一回事, 所以这样操作能成是很正常的

谭浩强那书上错误多了去了, 10年前都觉得他只是水平太差, 10年后还不见他改, 这就是道德问题, 只想骗钱不想擦屁股

我只能说你真的很强大 我用VC 编译了下 错误

error C2440: '=' : cannot convert from 'const int' to 'enum weekday'(不可以将 INT 赋值给ENUM)
我从来没听说过 枚举可直接赋值

你输出的是啥子嘛?
有的时候编译器能通过就不一定是对的
编译器的问题 枚举变量不能直接赋值 有得编译器能直接赋值通过~~你只需记住 枚举变量不能直接赋值就行

这里例子里用的是对的。
那本书还没看过,可能书的意思是不能像这样吧enum weekday {1,2,3,4};