标题:关于枚举
只看楼主
Donie
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-11-2
 问题点数:0 回复次数:10 
关于枚举
enum director {north=1,west,south,east};

enum director p;
假如p的初始是west
我要把p变为下一个south,要怎么写啊?
p++可以吗?
可是电脑在p++那就是过不了
搜索更多相关主题的帖子: 枚举 director south west 
2006-11-18 23:16
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 

enum director {north=1,west,south,east};

int p=west;
p++ --->south
你的P又不是指向数组,怎么可以这样.


倚天照海花无数,流水高山心自知。
2006-11-19 15:23
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
得分:0 
#include<stdio.h>
int main()
{
enum director {north=1,west,south,east};
enum director p=west;
p++;
return 0;
}
能通过(必须在c编译器,在c++编译器是错误的.)


2006-11-19 15:29
Donie
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-11-2
得分:0 
恩,是能过,可这为什么啊?
2006-11-19 18:06
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
得分:0 
以下是引用Donie在2006-11-18 23:16:26的发言:
enum director {north=1,west,south,east};

enum director p;
假如p的初始是west
我要把p变为下一个south,要怎么写啊?
p++可以吗?
可是电脑在p++那就是过不了

你想的这是错误的概念

enum director {north=1,west,south,east};
//这个相当于定义了3个常量,north=1,west=2,south=3,east=4;

enum director p=west; //声明了一个枚举类型,给其赋值也应该是枚举类型

而,

p++ <=> p=p+1; //注意 1是整形,p是枚举类型怎么能赋值或运算呢

除非强制转换 p=p+(enum director)1 <=> p=south;


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-11-19 18:25
Donie
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-11-2
得分:0 
恩,知道了,谢谢你们
2006-11-20 11:16
Donie
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-11-2
得分:0 
可是这虽然在C++里过不了,在c里却过了阿
2006-11-20 11:29
Donie
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-11-2
得分:0 
以下是引用unicorn在2006-11-19 18:25:41的发言:

你想的这是错误的概念

enum director {north=1,west,south,east};
//这个相当于定义了3个常量,north=1,west=2,south=3,east=4;

enum director p=west; //声明了一个枚举类型,给其赋值也应该是枚举类型

而,

p++ <=> p=p+1; //注意 1是整形,p是枚举类型怎么能赋值或运算呢

除非强制转换 p=p+(enum director)1 <=> p=south;

这样不行呀!

2006-11-20 17:36
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
得分:0 
#include <stdio.h>
main()
{
enum director { north=1,west,south,east};
enum director p=west ;
p++;
printf("%d",p);
}

在 C 和 C++ 里都能通过
枚举类型中的值和整型值是通用的
就像int 和 char 一样
但是相互赋值时需要强制类型转换

片言可以明百意 坐驰可以役万里
2006-11-20 18:42
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
得分:0 

弄错了哦
赋值时也可以不用强制转换


片言可以明百意 坐驰可以役万里
2006-11-20 18:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-103917-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.095340 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved