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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于c语言中enum类型与循环相关的知识,希望对你有一定的参考价值。

比如我定义了enum colorred,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 colorred,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”不定义该运算符或到预定义运算符可接收的类型的转换
怎么回事?

参考技术A 就是为了定义一组同属性的值,默认的最前面的是0,后面的元素依次+1;
但是注意,每个枚举都唯一定义一个类型,里面的元素的值不是唯一的,枚举成员的初始化只能通过同一枚举的成员进行!!
如:
enum
numa,b,c,d;那么a=0,b=1,c=2,d=3;
enum
numbera=1,b,c=1,d,e那么a=1,b=2,c=1,d=2,e=3;
参考技术B 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++语言

好了,如果你不明白或者有异议,请给我发消息本回答被提问者采纳
参考技术C 应该没问题。要不就是楼上的说法

C语言——enum枚举类型

enum是枚举类型,实际上就是定义一组值,enum定义数据类型的值只能是这一组值中的一个。

在实际生活中,很多问题都与是这样的。如人的性别,只有男女两种;一星期有七天;月份只有十二个值。

如下定义一周七天的值:

#include <stdio.h>

typedef enum
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}week;

int main()
{
    printf("%d %d %d %d %d %d %d\n",Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday);
    return 0;
}

运行结果为:0 1 2 3 4 5 6

enum枚举类型的成员都是整型常量,在定义时若不给成员赋值,则第一个成员的值为0,后面成员的值依次加1。若有一个值已初始化,则后面的成员在这个成员的值的基础上加一递增。

在外部给枚举变量赋值时,需要强制类型转换。如:week day = (week)1;

但实际中写作week day = 1; 编译器codeblocks也没有报错。

但需要注意,枚举变量的值都是整型的。

以上是关于关于c语言中enum类型与循环的主要内容,如果未能解决你的问题,请参考以下文章

C语言枚举序列问题

C语言中的enum是啥用途的?

C语言的关键字标识符基本数据类型

c语言中,啥是枚举类型(enum),给个例子?

c语言,有没有办法遍历枚举类型

c语言枚举用法