C++函数形式的宏定义

小弟有一个程度对输出结果看不懂,求大佬指点迷津
#include <iostream>
#define S(x) (x)*x*2
using namespace std;
void main()
{
	int k = 5, j = 2;
	int m = S(k + j);
	int n = S(k - j);
	cout << m << endl;
	cout << n << endl;
}
这个程序输出的结果是39  11,不知为什么
如果我把宏定义中的(x)改成x:
#include <iostream>
#define S(x) x*x*2
using namespace std;
void main()
{
	int k = 5, j = 2;
	int m = S(k + j);
	int n = S(k - j);
	cout << m << endl;
	cout << n << endl;
}
程序运行结果是19  -9,同样不知为什么。。。


#C++工程师#
全部评论
宏只是简单替代,#define S(x) (x)*x*2  在 int m = S(k + j); 是 (k+j)*k+j*2   而#define S(x) x*x*2 在 int m = S(k + j); 是 k+j*k+j*2  
点赞 回复 分享
发布于 2017-09-02 11:35

相关推荐

yubullym:双非目前 0 正式 offer,打算继续实习到 1 月准备春招了
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务