永发信息网

C++关于宏定义,++运算符的。

答案:2  悬赏:60  手机版
解决时间 2021-02-25 22:44
  • 提问者网友:刺鸟
  • 2021-02-25 12:43
#include
#define SQ(y) ((y)*(y))

void main()
{
int i=1;
while(i<=5)
cout< cout<}
为什么输出的结果是1 9 25?
我是这样理解的:在第一个cout语句中等价于cout<<((i++)*(i++))<<"\t";
因为i=1,所以第一个i是1,然后i++,所以i变成2,所以不就是1*2吗,所以第一个输出是2。这样理解哪里错了呢?
最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-02-25 13:16
((i++)*(i++)) 有两个i++啊,而且是后缀的,因此这句相当于三句
i * i; // 1
i++; // i = 2
i++; // i = 3
然后下一次循环
i * i; // 3 * 3 = 9
i++; // i = 4
i++; // i = 5
然后下一次循环
i * i; // 5 * 5 = 25
i++; // i = 6
i++; // i = 7
全部回答
  • 1楼网友:洎扰庸人
  • 2021-02-25 14:54

c=a+b与c=b+a虽然调用的是同一个函数,但结果有可能不同的.

例如:string a="abc",b="def",c;

c=a+b;//执行完c="abcdef";缺少的对象是a

但是c=b+a;//执行完是c="defabc";缺少的对象是b

少的操作数是前面的操作数.

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯