关于C语言刷题(#define宏定义函数的常见错误)
首先我们来先看对#define的定义
define,宏定义,C语言中预处理命令一种。分为无参宏定义和带参宏定义。无参宏定义的一般形式为:#define 宏名 字符串;带参宏定义的一般形式为:#define 宏名(参数表) 字符串;
其实#define不仅可以定义常见变量,也可以定义带参函数
在使用中一定要注意#define的边界问题(可以简单理解为数学中括号内表达式运算的法则)
在这边看一个简单的例题
#define M(x,y,z) x*y+z
main()
{
int a = 1,b = 2,c = 3;
printf("%d\n",M(a+b,b+c,c+a));
//下列该程序的运行结果是()
A 19
B 17
C 15
D 12
}
解题过程
这边有一个注意点,就是千万不要先计算M()中的参数,而是直接将参数带入运算
计算结果如下:
a+b* b+c+c+a
= 1+2* 2+3+3+1
=12
正确答案是 D
但是博主在第一次做这道题的时候犯了一个非常低级的错误
错误计算过程如下
将M(3,5,4)
= 3*5+4
=19
选出了错误答案A
这里分享下博主自己自学C语言的新手错误
如有错误,请指出,博主会积极改正
谢谢
祝大家学习愉快