出错了请求帮忙?

newleague 2007-07-13 06:55:51
main(){
enum body
{ a,b,c,d } month[31],j;
int i;
j=a;
for(i=1;i<=30;i++){
month[i]=j;
j++;
if (j>d) j=a;
}
for(i=1;i<=30;i++){
switch(month[i])
{
case a:printf(" %2d %c\t",i,'a'); break;
case b:printf(" %2d %c\t",i,'b'); break;
case c:printf(" %2d %c\t",i,'c'); break;
case d:printf(" %2d %c\t",i,'d'); break;
default:break;
}
}
printf("\n");
}


出错如下:Assigning int to body
请教问题出在哪了?我是用TC++编译的
...全文
140 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
newleague 2007-07-14
  • 打赏
  • 举报
回复
谢谢你们!
guzhilei1986 2007-07-14
  • 打赏
  • 举报
回复
回复uwinb()
谢谢了。
uwinb 2007-07-13
  • 打赏
  • 举报
回复
enum body{a,b,c,d}month[31],j; //楼上说的空格可以不写的
上面的一行等价于下面几行
enum body {a,b,c,d}; //定义一种枚举类型,它只有四个符号常量的取值范围
enum body j; //定义一个枚举变量, j=a; j=b; j=c; j=d; 不可以再赋其它字面值
body month[31]; //定义一个枚举数组,相当于定义了31个连续存放的变量j

在旧的C语言中枚举类型和整形可以进行隐式转换,在C++中只允许进行显式转换.
执行 j++; 时变量j先提升为整型才能进行算术运算,自增后又转换为枚举类型赋回变量j
详见 wb_am(小白) 修改的代码 j = (body)(j + 1);
guzhilei1986 2007-07-13
  • 打赏
  • 举报
回复
enum body { a,b,c,d } month[31],j;
各位老大,这句话是什么意思?moth[31]和j属于什么类型的变量,问什么moth[31]前面用空格隔开?
guzhilei1986 2007-07-13
  • 打赏
  • 举报
回复
lz我用vs2003编译了一下,可以运行哦。
wb_am 2007-07-13
  • 打赏
  • 举报
回复
#include <stdio.h>

enum body {
a,b,c,d
}month[31], j;
void main() {
int i;
j=a;
for(i=1;i<=30;i++){
month[i]=j;
j = (body)(j + 1);
if (j>d) j=a;
}
for(i=1;i<=30;i++){
switch(month[i])
{
case a:printf(" %2d %c\t",i,'a'); break;
case b:printf(" %2d %c\t",i,'b'); break;
case c:printf(" %2d %c\t",i,'c'); break;
case d:printf(" %2d %c\t",i,'d'); break;
default:break;
}
}
}


改了一下试试看
uzone 2007-07-13
  • 打赏
  • 举报
回复
在tc下应该可以的,vc或者vs下好像都不行。
我啃 2007-07-13
  • 打赏
  • 举报
回复
int 和enum对象不能赋值

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧