枚举时没有赋初值什么影响

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:50:08
#include <stdio.h>
#include <string.h>
main()
{ enum em{ em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]); }输出的结果代表什么?
#include <stdio.h>
#include <string.h>
main()
{ enum em{ em1=1,em2,em3};
char *aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]); }如果是这样缺省,输出是BBCCDD
{ enum em{ em1,em2=2,em3};
char *aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]); }这样的话是AACCDD,
这是出于什么原因,书上没说,书上的枚举都是有初值的,是软件自身的原因吗?

枚举类型嘛!
enum em{ em1=3,em2=1,em3};
赋值后em3=em2+1=2;
所以说:aa[em1],aa[em2],aa[em3]
就相当于,aa[3],aa[1],aa[2]

char *aa[]={"AA","BB","CC","DD"};
定义指针数组并赋值
把各字符串的首地址付给数组元素
输出DDBBCC喽!!!

枚举类型后一元素的值默认为前一元素的值加一