常量组判断,答案不是a。

img


快期末考试了,求解答,为什么不选a啊

下面是我的理解,不一定对,供你参考:
A,x89A 十六进制应该是0x开头
B,同理x124f应该是0x开头,八进制0187里面不能出现8
C, x12k应该是0x开头,十六进制不能出现k
所以,正确答案应该是D。


测试代码:


#include <stdio.h>

#define A x89a
#define B 0187
#define C x124f
#define D x12k

int main(void){

        printf("%d\n",A);
        printf("%d\n",B);
        printf("%d\n",C);
        printf("%d\n",D);
    
}

先编译上面的代码,出现错误,依次更改为:
#define A 0x89a
#define B 0177
#define C 0x124f
#define D 0x12


然后编译通过,正常运行。

数字以0开头表示八进制,以0x开头表示十六进制,A选项的x89A应该改成0x89A

这个题的所有转义前都有
比如'\012'和'\x89A'之类的
A的x89A错误
multi-character character constant
B和C不用说了 8进制不能超过8 16进制不能超过f

十六进制整数不是以0x或0X开头嘛