已知宏定义: #define M y*y+3*y , 则表达式 s=3*M+4*M+y*M 编译预处理后的结果是
A. s=3*(y*y+3*y)+4*(y*y+3*y)+y*(y*y+3*y) B. s=3*(y*y)+3*y+4*(y*y)+3*y+y*(y*y)+3*y C. s=3*y*y+3*y+4*y*y+3*y+y*y*y+3*y D. s=3*(y*y)+(3*y)+4*(y*y)+(3*y)+y*(y*y)+(3*y)
宏定义替换不能带括号
选C。考察的是宏定义编译前作替换,...
用户登录可进行刷题及查看答案
选C。考察的是宏定义编译前作替换, 在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。即:y*y+3*y表达式去置换所有的宏名M。
定义宏没有括号,所以A、B、D错误。
登录后提交答案