【问题标题】:Why does the value of "l" become 4? [duplicate]为什么“l”的值变成了4? [复制]
【发布时间】:2019-03-14 18:11:29
【问题描述】:
#include<bits/stdc++.h>
#define MAX(A,B) (A>B)?A:B
using namespace std;

int main()
{
    int i= 1, j=2;
    int val1 = max(++i, ++j);
    cout<<"i : "<<i<<" j : "<<j<<endl;
    printf("Val2 : %d\n", val1);

    int k = 1, l = 2;
    int val2 = MAX(++k, ++l);
    cout << "k : " << k << " l : " << l << endl;
    printf("Val2 : %d\n", val2);

    return 0;
}

以上代码的输出:

i : 2 j : 3

Val2 : 3

k : 2 l : 4

Val2 : 4

但我认为应该是:

i : 2 j : 3

Val2 : 3

k : 2 l : 3

Val2 : 3

谁能简单说明一下?

【问题讨论】:

  • 好的,这不能是java和python和c++
  • 请使用适当的标签来区分您使用的语言。 Python 和 Java 与此无关。
  • 提示:手动展开MAX宏。
  • 尝试手动扩展宏,然后想想扩展后的代码做了什么。

标签: c++


【解决方案1】:

这里的 MAX 不是函数。如果它是一个函数,那么它会做你期望它做的事情。但它是一个宏,而不是一个函数。所以MAX(++k, ++l) 不等于++k; ++l; MAX(k, l) 而是(++k&gt;++l)?++k:++l

【讨论】:

  • ------------>哇 (++k>++l)?++k:++l 我明白了。非常感谢你。 @Hammerite
猜你喜欢
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 2019-02-09
  • 2015-03-06
  • 1970-01-01
  • 2021-02-14
相关资源
最近更新 更多