早教吧 育儿知识 作业答案 考试题库 百科 知识分享

设有定义:#defineSTR"12345";,则以下叙述正确的是这题的C,D两项有什么区别吗?A、宏名STR代替的是数值常量12345B、宏定义以分号结束,编译时会产生错误信息C、宏名STR代替的是字符串"12345"

题目详情
设有定义:#define STR "12345";,则以下叙述正确的是 这题的C,D两项有什么区别吗?
A、宏名STR代替的是数值常量12345
 B、宏定义以分号结束,编译时会产生错误信息
 C、宏名STR代替的是字符串"12345"
 D、宏名STR代替的是字符串常量"12345"
▼优质解答
答案和解析
#define STR "12345"; 宏定义居然带分号.
A,C,D 显然都是错的.因为 STR 代替的是 "12345"; (含分号和引号)
出题人的目的是要回答者 答 B -- 编译时会产生错误信息.
一般情况确实如此,例如:
#define STR "12345";
printf("%s",STR); // -- 编译时会产生错误信息,因为替代后为:printf("%s",“12345”;); 多余分号引起出错.
但有些情况未必出错.例如:
#define STR "12345";
char str[]=STR;
printf("%s",str);
没有问题,编译通过,运算正确.
--------------
C,D两项 没区别.出题人,估计原打算说 “字符常量”,却说成 “字符串常量”.