C语言 枚举类型在VS2010上无法实现自增,自减操作

31 篇文章 10 订阅

如果一个变量只有几种可能的值,那么这个变量可以被定义为枚举类型。
枚举的意思就是把可能的值一一列举出来,那么变量的值也只限于列举出来的范围中。
枚举类型的说明:
1.声明:enum Color{red,yellow,blue,white,black};
2.定义:enum Color i,j,k,pri;
3.枚举元素代表一个整数,默认顺序是从0开始,可以用%d来输出,比如

#include  <stdio.h>

int main()
{
	enum Color{red,yellow,blue,white,black};
	enum Color i,j,k,pri;
	int n,loop;
	n = 0;
	i = red;
	printf("%d",i);
	getchar();
	return 0;
}

此时打印出来的是0,但是不支持输出字符串

printf("%s",i);

此时输出为null。
4.枚举类型可以进行比较,比如

#include  <stdio.h>
int main()
{
	enum Color{red,yellow,blue,white,black};
	enum Color i,j,k,pri;
	int n,loop;
	n = 0;
	i = red;
	j = yellow;
	if (i <j)
	{
		printf("yes!!");
	}
	getchar();
	return 0;
}

此时能打印出yes!!
5.C99标准把枚举类型作为一种整型数据,所以枚举类型是应该支持自加一操作的,《谭浩强 C程序设计》中也应用了枚举类型自加的操作,比如我们写这样一个代码:

#include  <stdio.h>
int 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++)
	{
		printf("当为第%d个颜色\n",i);
	}
	getchar();
	return 0;
}

这时应该打印出4列话才对,但是我用vs2010 把文件后缀改成.c,该代码是报错的。
这里写图片描述
所以我只能理解为微软对C语言的支持不是太好,C99中的一些特性并没有支持。
换个角度想,其实应用枚举类型自加操作本身也不太好,当我们使用默认的顺序而不是在声明时指定,枚举元素才是连续的,指定后元素将不再连续,比如

#include  <stdio.h>
int main()
{
	enum Color{red = 5,yellow = 3,blue,white,black};
	enum Color i,j,k,l,m;
	i = red;
	j = yellow;
	k = blue;
	l = white;
	m = black;
	printf("i为%d\n",i);
	printf("j为%d\n",j);
	printf("k为%d\n",k);
	printf("l为%d\n",l);
	printf("m为%d\n",m);
	getchar();
	return 0;
}

结果:
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值