1

我在这个表达式中得到 lvalue 不可修改

tmp_ux =tmp_ux+ tau*(-G*tmp_phi*grad_phi_x)/tmp_rho;

我使用的变量是

double tmp_ux
#define tau 1.0
#define G -6.0
double tmp_phi
double grad_phi_x
double tmp_rho
4

1 回答 1

7

由于宏#define G -6.0,表达式,

tmp_ux =tmp_ux+ tau*(  -G  *tmp_phi*grad_phi_x)/tmp_rho;

变成,

tmp_ux =tmp_ux+ tau*( --6.0  *tmp_phi*grad_phi_x)/tmp_rho;

在这里,--6.0当您尝试递减时,这是非法的6.0

为避免这种情况,请将表达式更改为,

tmp_ux =tmp_ux+ tau*( (-1) * G*tmp_phi*grad_phi_x)/tmp_rho;

或者,

如评论中所述,将宏定义为非常优雅,

#define G (-6.0)

因此,您的表达式扩展为,

tmp_ux =tmp_ux+ tau*(  -(-6.0) *tmp_phi*grad_phi_x)/tmp_rho;

两者都可以解决这个错误。

于 2013-06-24T04:21:58.477 回答