出错了请求帮忙?
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++编译的
[解决办法]
#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;
}
}
}
改了一下试试看
[解决办法]
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);