相关疑难解决方法(0)

按名称呼叫/按值呼叫

我试图在这里理解这段代码:

#include <iostream>
using namespace std;

#define mymult(a, b) a*b
inline int mymult1(int a, int b) {return a*b;}

int main() {
cout << "mymult(2+2, 3+3) = " << mymult(2+2, 3+3) << "\n";
cout << "mymult1(2+2, 3+3) = " << mymult1(2+2, 3+3) << "\n";
}
Run Code Online (Sandbox Code Playgroud)

mymult = 11,mymult1 = 24.我知道'#define实际上是通过名字调用而不是按值调用.但是,我很难理解为什么它返回的值是11 ......而不是24.这是什么原因造成的?

c++ inline callbyname c-preprocessor call-by-value

1
推荐指数
1
解决办法
232
查看次数

具有不同结果的宏论证

所以我在C程序中使用宏调用时遇到了这个相当'不屈不挠'的问题.我使用的宏是:

#define MACRO(X) X*X
Run Code Online (Sandbox Code Playgroud)

问题出在我这样做的时候

printf("%d",MACRO(3));
Run Code Online (Sandbox Code Playgroud)

结果显示9(这是正确的).只有当我将3传递为2 + 1时如下:

printf("%d",MACRO(2+1));
Run Code Online (Sandbox Code Playgroud)

它奇怪地显示了5的结果.任何人都可以告诉我为什么?

c macros

1
推荐指数
1
解决办法
42
查看次数

如何理解这个C宏?

我无法理解这段代码

#define sqt(x) x*x
int main(){
print("%d",sqt(3+1));
}
Run Code Online (Sandbox Code Playgroud)

手动我得到10的输出.但是当编写代码并编译它时我得到的答案为7.请解释一下.

c c-preprocessor

1
推荐指数
1
解决办法
83
查看次数

使用宏的表达式中的意外输出

我的代码:

#include <stdio.h>
#define PRODUCT(x) (x * x)

int main()
{
    int i = 3, j, k, l;
    j = PRODUCT(i + 1);
    k = PRODUCT(i++);
    l = PRODUCT(++i);
    printf("%d %d %d %d", i, j, k, l);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么输出是:

7 7 12 49. 
Run Code Online (Sandbox Code Playgroud)

宏中是否有任何错误或其他问题?

c macros preprocessor output

1
推荐指数
2
解决办法
66
查看次数

这个 C 代码的输出是 49 但有人可以解释我怎么做吗?

#include <stdio.h>

#define CUBE(x) (x * x * x)

int main() {
    printf("%d", CUBE(4+5));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor

1
推荐指数
2
解决办法
158
查看次数

#define a b + c confusion ..我没有得到我预期的输出

   #include <iostream>
   using namespace std;
   # define p 5+3
   int main() {
    //code

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

    return 0;
     }
Run Code Online (Sandbox Code Playgroud)

预期产量:64实际产量:23 howwW ?? 我不明白

c++

0
推荐指数
1
解决办法
72
查看次数

#define与运营商一起使用

我知道它#define具有以下语法:#define SYMBOL string 例如,如果我写

#define ALPHA 2-1
#define BETA ALPHA*2
Run Code Online (Sandbox Code Playgroud)

然后ALPHA = 1BETA = 0.(为什么?)

但如果我写这样的东西

#define ALPHA (2-1)
#define BETA ALPHA*2
Run Code Online (Sandbox Code Playgroud)

然后ALPHA = 1BETA = 2.

有人可以解释一下这两者之间有什么区别吗?

c++ preprocessor-directive

0
推荐指数
1
解决办法
78
查看次数

C 中预处理器指令语句的值

所以,我很困惑为什么 i 的输出是 27 而不是 343

 #include <stdio.h>
#define x 5+2
void main() {
int i;
i=x*x*x;
printf("%d",i); }
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
91
查看次数

C++定义表达式评估

假设我们有这个表达式:

#define cube(x) x * x * x
Run Code Online (Sandbox Code Playgroud)

然后我们称之为:

int n = 3, v;
v = cube(n + 1);   // v = 10
v = cube((n + 1)); // v = 64
v = cube(n);       // v = 27
Run Code Online (Sandbox Code Playgroud)

所以问题是:为什么第一次操作不做v = 64

c++

-1
推荐指数
1
解决办法
1747
查看次数

在表达式中使用定义时结果不正确

数量级不正确:

#include <stdio.h>
#include <math.h>
#define M_H 1.007975/(6.02214076*pow(10,23)*1000)
#define k_B 1.380649*pow(10,-23)
int main()
{
    printf("%G\n",M_H);
    printf("%G\n",k_B);
    printf("%G\n",M_H/k_B);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

因为它给出:

1.67378E-27
1.38065E-23
1.21232E-50
Run Code Online (Sandbox Code Playgroud)

我需要定义的常量。

我使用带有-lm标志的 gcc 12.2.1-1。我期待着:

1.67378E-27
1.38065E-23
1.21232E-4
Run Code Online (Sandbox Code Playgroud)

c macros

-1
推荐指数
1
解决办法
49
查看次数