修改后的左值误差

时间:2015-04-22 13:25:46

标签: c++

void mouse(int btn,int state,int x,int y)
{
    if( btn == GLUT_LEFT_BUTTON && state = GLUT_DOWN ) axis = 0;
    if( btn == GLUT_MIDDLE_BUTTON && state = GLUT_DOWN ) axis = 1;
    if( btn == GLUT_RIGHT_BUTTON && state = GLUT_DOWN ) axis = 2;
    theta[axis]+=2.0;
    if( theta[axis]>360 ) theta[axis]-=360;
    display();
}

标识符btn。上面的代码给了我修改左值错误。我不知道为什么。请帮我解决这个问题。任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:2)

您确定:state = GLUT_DOWN ...

void mouse(int btn,int state,int x,int y)
{
    if( btn == GLUT_LEFT_BUTTON && state = GLUT_DOWN ) axis = 0;
    if( btn == GLUT_MIDDLE_BUTTON && state = GLUT_DOWN ) axis = 1;
    if( btn == GLUT_RIGHT_BUTTON && state = GLUT_DOWN ) axis = 2;
    theta[axis]+=2.0;
    if( theta[axis]>360 ) theta[axis]-=360;
    display();
}

...在if语句中。它分配值 - 它不会比较。如果指定的值不等于0,则将其评估为true。

答案 1 :(得分:1)

问题是

if( btn == GLUT_LEFT_BUTTON && state = GLUT_DOWN ) axis = 0;
                                     ^
                                     assignment

它正在尝试将GLUT_DOWN分配给btn == GLUT_LEFT_BUTTON && state,这不是可修改的左值。

在上面的陈述中,我认为你希望想要比较,即

if( btn == GLUT_LEFT_BUTTON && state == GLUT_DOWN ) axis = 0;
                                     ^^
                                     equality comparison