C++ “如何修复”;“之前的预期表达式”=&引用;代币;?

C++ “如何修复”;“之前的预期表达式”=&引用;代币;?,c++,C++,结果发现有错误 “=”标记之前应为表达式 #包括 #定义e=2.71828 使用名称空间std; int main(){ int n,b,c; cout>n; b=e-(1/(e*e)); 对于(int a=0;a您不能将=与定义一起使用 只需将#define e e=2.71828更改为#define e e(2.71828) 如果您想刷新关于#define预处理器指令如何工作的记忆,请查看第页 #define e 2.71828 只需删除“=”符号。宏定义文本替换 #define a b

结果发现有错误

“=”标记之前应为表达式

#包括
#定义e=2.71828
使用名称空间std;
int main(){
int n,b,c;
cout>n;
b=e-(1/(e*e));

对于(int a=0;a您不能将
=
定义一起使用

只需将
#define e e=2.71828
更改为
#define e e(2.71828)


如果您想刷新关于
#define
预处理器指令如何工作的记忆,请查看第页

#define e 2.71828

只需删除“=”符号。

宏定义文本替换

#define a b
使预处理器将
a
替换为
b

请注意,没有
=

您将
e
定义为
=2.71828

展开它,您将获得:

b = = 2.71828 - (1 / (= 2.71828 * = 2.71828))
删除
=
是一个明显的修复方法,但是你真的应该把1970年代抛在脑后使用它

constexpr double e = 2.71828;
——定义E2.71828182845904235360287135266249775724709369995

是修复程序,否则预处理器将把
=
扩展到常量中,并产生一些神秘的编译器诊断

请注意,我还为欧拉数使用了更多的小数位数:对于
双精度
(甚至是单精度
浮点
)来说,您的常数是一个糟糕的选择我现在的值将在编译时截短并且足够好,达到四倍精度。遗憾的是,C++标准库没有为您定义常数(也包括PI)。
另一个更现代的说法是

constexpr double e = 2.71828182845904523536028747135266249775724709369995;

请给出完整的错误Masige。在哪一行发生错误?<代码>定义E 2.71828 < /代码>…您不需要<代码> >代码>您需要退一步并重新考虑预处理器。预处理宏不工作于C++中的其他语句。在代码< E < /代码>中删除“=”。C++代码定义E 2.71828 < /C>作为解决方案,我建议您不要使用宏,而是使用C++常量,例如“代码> CytExpReE=2.71828;<代码>链接,并将十九世纪放在后面,并使用更精确的代码< E> <代码>:2.71828、1828、45、325、328、775、1352662497、775、7707093699、95是一个良好的开始。对四倍精度很好。@Bathsheba据我所知,OP正在使用的值就是OP打算使用的值。
constexpr double e = 2.71828182845904523536028747135266249775724709369995;