2014-10-12 139 views
-7

這是我的問題!的問題,我相信作爲左操作數所需的左值的錯誤

for(i = 0; i <= MAX - 2; i++){ 
    for(j = i + 1; j <= MAX - 1; j++){ 
     if(stud[i].getEdad() < stud[j].getEdad()){ 
      temp=stud[i].getEdad(); 
      stud[i].getEdad() = stud[j].getEdad(); 
      stud[j].getEdad() = temp; 
     } 
    } 
} 
+0

它是哪一行? – Winestone 2014-10-12 09:28:02

+3

btw,'stud [i] .getEdad()'返回什麼類型?它的函數聲明是什麼? – Winestone 2014-10-12 09:29:07

+0

這是我的代碼是 – 2014-10-12 09:33:09

回答

1

源是

stud[i].getEdad() = stud[j].getEdad(). 

左值(定位符值)表示在存儲器中佔用一些識別的位置的對象(即具有一個地址)。 rvalues是通過排除來定義的,通過說每個表達式都是左值或右值。因此,從左值的上述定義中,一個右值是不表示對象在存儲器

隨着中說佔據一些識別的位置的表達,分配期望的左值作爲它的左操作數即

//Here foo returns a reference i.e lvalue so ther's no problem in below code. 
int& foo() 
{ 
    return globalvar; 
} 

int main() 
{ 
    foo() = 10; 
    return 0; 
} 

//whereas following one will give you an error since return value is just a temporary object and you are assigning to it. 
int foo() 
{ 
    return globalvar; 
} 

int main() 
{ 
    foo() = 10; 
    return 0; 
} 
+0

我很感激,非常感謝你的偶像! – 2014-10-12 09:43:14

相關問題