64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#define SQUARE(a) ((a)*(a))
using namespace std;
int Square(int a)
{
return a*a;
}
int main()
{
int a = 5;
int b = 0;
b = SQUARE(a++);
cout<<a<<endl<<b<<endl;//为什么a=7,b=25
b = SQUARE(++a);
cout<<a<<endl<<b<<endl;//为什么a=7,b=49
}
#include <iostream>
#define SQUARE(a) ((a)*(a))
using namespace std;
int Square(int a)
{
return a*a;
}
int main()
{
int a = 5;
int b = 0;
b = SQUARE(a++);
cout<<a<<endl<<b<<endl;//a=7,b=25
b = SQUARE(++a);
cout<<a<<endl<<b<<endl;//a=9,b=81
}
#include <iostream>
#define SQUARE(a) ((a)*(a))
using namespace std;
int Square(int a)
{
return a*a;
}
void main()
{
int a = 5;
int b = 0;
b = SQUARE(a++);
cout<<a<<endl<<b<<endl;//为什么a=7,b=25,a++是先计算后++
b = SQUARE(++a);
cout<<a<<endl<<b<<endl;//为什么a=9,b=81,++a是先++后计算
}
//为什么a计算两次,因为你的define把SQUARE(a)定义成((a)*(a))的原因。