當我執行這個程序:爲什麼if(++ x = ++ y)有效,if(x ++ = ++ y)不起作用?
#include<iostream>
using namespace std;
int main(){
int x=5,y=9;
if(++x=y++){
cout<<"Works "<<x;
}
else{
cout<<"No";
}
return 0;
}
它正常工作,輸出是:工作9
,但如果我執行:
#include<iostream>
using namespace std;
int main(){
int x=5,y=9;
if(x++=y++){
cout<<"Works "<<x;
}
else{
cout<<"No";
}
return 0;
}
它指出: 在函數「廉政main()': 6:11:error:賦值爲左操作數所需的左值如果(x ++ = y ++){
@BoBTFish所以'++ x'是一個左值?很奇怪 – edc65
用於比較的運算符是'=='而不是'='。所以很難說清你正在努力完成什麼。也就是說,這是一個有趣的問題 – edc65
'++ x'是一個左值,但如果賦值給它,則會調用未定義的行爲(兩個修改,C和C++ 89語言中沒有插入序列點)。 –