关于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”不定义该运算符或到预定义运算符可接收的类型的转换
怎么回事?
但是注意,每个枚举都唯一定义一个类型,里面的元素的值不是唯一的,枚举成员的初始化只能通过同一枚举的成员进行!!
如:
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类型与循环的主要内容,如果未能解决你的问题,请参考以下文章