- 此问题在此处已有答案**:
The need for parentheses in macros in C [duplicate](8个答案)
2天前关闭。
数量级不正确:
#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;
}
因为它提供:
1.67378E-27
1.38065E-23
1.21232E-50
我需要定义好的常数。
我使用了带有-lm
标志的gcc 12.2.1 - 1。我期望:
1.67378E-27
1.38065E-23
1.21232E-4
2条答案
按热度按时间oug3syen1#
M_H/k_B
扩展为:请注意,第二个
pow
没有括在括号中,因此乘法是在前面的除法之后进行的。您应该将定义括在括号中,以防止:我还建议您用
1e-23
语法(也称为科学记数法)替换pow
函数调用;这样,k_B
中的数字将被解析为单个标记,并且括号将不是必需的:我需要定义的常量
如果由于某种原因,您无法修改这些定义,您仍然可以在使用时添加括号:
f3temu5u2#
做
以确保正确的顺序