前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言 枚举类型在VS2010上无法实现自增,自减操作

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

作者头像
chaibubble
发布2022-05-07 09:04:20
7310
发布2022-05-07 09:04:20
举报
文章被收录于专栏:深度学习与计算机视觉

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

代码语言:javascript
复制
#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,但是不支持输出字符串

代码语言:javascript
复制
printf("%s",i);

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

代码语言:javascript
复制
#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程序设计》中也应用了枚举类型自加的操作,比如我们写这样一个代码:

代码语言:javascript
复制
#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中的一些特性并没有支持。 换个角度想,其实应用枚举类型自加操作本身也不太好,当我们使用默认的顺序而不是在声明时指定,枚举元素才是连续的,指定后元素将不再连续,比如

代码语言:javascript
复制
#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;
}

结果:

这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档