我在这个表达式
中得到左值不可修改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
答案 0 :(得分: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;
两者都可以解决这个错误。