关于c语言中enum类型与循环

来源:百度知道 编辑:UC知道 时间:2024/05/20 23:31:24
比如我定义了enum color{red,yellow,blue,white,black};
enum color i,j,k;
我要使用如以下循环:
for(i=red;i<=black;i++)
在visual c++ 2005下出现错误:二进制“++”: “main::color”不定义该运算符或到预定义运算符可接收的类型的转换;可这是谭浩强书上的呀!如何解决?
这是源程序:
#include<stdio.h>
void main()
{
enum color{red,yellow,blue,white,black};
enum color i,j,k,pri;
int n,loop;
n=0;
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
if(i!=j)
{
for(k=red;k<=black;k++)
......
还是有提示:
error C2676: 二进制“++”: “main::color”不定义该运算符或到预定义运算符可接收的类型的转换
error C2676: 二进制“++”: “main::color”不定义该运算符或到预定义运算符可接收的类型的转换
error C2676: 二进制“++”: “main::color”不定义该运算符或到预定义运算符可接收的类型的转换
怎么回事?

enum color i,j,k;
最后的分号是";"
写错了
//=====================
我仔细看了下,

总的来说老谭写的这个程序确实是有问题的
你把类似
for(i=red;i<=black;i++)
这样的代码改成
for(i=red;i<=black;(int)i++)
就行了,原因是枚举类型不支持++运算符,强行转化成int就可以了。

但也不能怪老谭,因为如果你把你的.cpp后缀文件改称.c文件,就会运行无误,这是因为.cpp文件是按c++来编译的,.c文件是按c语言来编译的。毕竟老谭源码那本书讲的是c语言,而不是c++语言

好了,如果你不明白或者有异议,请给我发消息

应该没问题。要不就是楼上的说法