【问题标题】:#define a b+c confusion..I did not get the output that I expected [duplicate]#define a b+c 混淆..我没有得到我期望的输出[重复]
【发布时间】:2015-12-01 15:14:47
【问题描述】:
   #include <iostream>
   using namespace std;
   # define p 5+3
   int main() {
    //code

    int i=p*p;
   cout<<i;

    return 0;
     }

预期输出:64 实际产量:23 怎么样?? 没看懂

【问题讨论】:

  • 欢迎来到 SO!请指定您获得的输出而不是预期的输出。
  • 非常好的示例,说明为什么您不应该使用宏,尤其是在必要时不使用括号时。

标签: c++


【解决方案1】:

p 将替换为 5+3。所以int i=p*p;int i=5+3*5+3;* 的排名高于+,因此结果为23

你需要把你的定义加上括号:

#define p (5+3)

【讨论】:

    【解决方案2】:
     int i=p*p;
    

    p*p 被替换为 5+3*5+3 ,因此得到 23 (5+15+3=23)。如您所知,* 将在 + 之前进行评估。

    定义宏如下-

    #define p (5+3)
    

    【讨论】:

      猜你喜欢
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      相关资源
      最近更新 更多