当前位置:  开发笔记 > 编程语言 > 正文

为什么if(++ x = ++ y)有效,if(x ++ = ++ y)不起作用?

如何解决《为什么if(++x=++y)有效,if(x++=++y)不起作用?》经验,为你挑选了1个好方法。

当我执行这个程序时:

#include
using namespace std;
int main(){
    int x=5,y=9;

    if(++x=y++){
        cout<<"Works "<

它工作正常,输出是:Works 9

但如果我执行:

  #include
using namespace std;
int main(){
    int x=5,y=9;

    if(x++=y++){
        cout<<"Works "<

它声明:在函数'int main()'中:6:11:错误:左值作为赋值的左操作数,如果(x ++ = y ++){



1> BoBTFish..:

因为x++不是左值.

更具体地说,x++增量x,然后返回一个临时的原始值x.临时对象不能(在一旁可以使用可疑的合法性)在作业的左侧使用,因此它不是左值.

++x递增x并返回对x(使用其新值)的引用.然后,如果您选择,您可以直接分配给它,因此它是一个左值.

但是,您可能实际上想要比较两个表达式的相等性,而不是进行赋值.在这种情况下,您需要使用==而不是=.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有