#定义一个b+c混淆.我没有得到预期的输出

#define a b+c confusion..I did not get the output that I expected

本文关键字:输出 混淆 定义 b+c 一个      更新时间:2023-10-16
   #include <iostream>
   using namespace std;
   # define p 5+3
   int main() {
    //code
    int i=p*p;
   cout<<i;
    return 0;
     }

预期输出:64实际输出:23howwW ? ?我不明白

p将被5+3取代。直线int i=p*p; = int i=5+3*5+3;*的排名比+高,所以结果是23

你需要对你的定义进行修饰:

#define p (5+3)
 int i=p*p;

p*p被替换为5+3*5+3,从而得到23 (5+15+3=23) .如您所知,*将在+之前求值。

定义宏如下-

#define p (5+3)