当我执行这个程序时:
#include<iostream>
using namespace std;
int main(){
int x=5,y=9;
if(++x=y++){
cout<<"Works "<<x;
}
else{
cout<<"No";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,输出是:Works 9
但如果我执行:
#include<iostream>
using namespace std;
int main(){
int x=5,y=9;
if(x++=y++){
cout<<"Works "<<x;
}
else{
cout<<"No";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它声明:在函数'int main()'中:6:11:错误:左值作为赋值的左操作数,如果(x ++ = y ++){
因为x++
不是左值.
更具体地说,x++
增量x
,然后返回一个临时的原始值x
.临时对象不能(在一旁可以使用可疑的合法性)在作业的左侧使用,因此它不是左值.
++x
递增x
并返回对x
(使用其新值)的引用.然后,如果您选择,您可以直接分配给它,因此它是一个左值.
但是,您可能实际上想要比较两个表达式的相等性,而不是进行赋值.在这种情况下,您需要使用==
而不是=
.
归档时间: |
|
查看次数: |
1520 次 |
最近记录: |