关于int m[] = {WHITE, BLACK, BLUE, BRED}的理解

2019-07-20 16:52发布

在UCOSIII扩展例程下面使用信号量进行任务同步的源码中,遇到这样一个定义:
int lcd_discolor[14]={        WHITE, BLACK, BLUE,  BRED,      
                                GRED,  GBLUE, RED,   MAGENTA,                
                                GREEN, CYAN,  YELLOW,BROWN,                        
                                BRRED, GRAY };
然后在下面就这样遍历这个数组:lcd_discolor[num%14];
我认为自己的C学得还算可以,可是看似简单的一个字符数组定义我以前没见过,也理解不通,可是这个定义确实能让程序正确的运行。我不理解的地方:
(1)数组里面每个元素都定义为int类型(即4个字节),如果用来存放字符串,显然应当理解成这样:lcd_discolor[0] = {"WHITE"};lcd_discolor[1] = {"BLACK"};.... lcd_discolor[13]={"GRAY"}但是没加引号这样是什么意思?
(2)为何要定义成int,为什么不是char?
我真的不理解上面这个定义,我知道两种处理字符串的两种方法:char *p = "hello!"; char a[] = "hello!";像这样的int m[] = {WHITE, BLACK, BLUE,  BRED}做何解释???麻烦大家有谁知道的帮我讲解一下。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。