上面的编译时会出现一下错误:

aplus2.c:6:6: error: lvalue required as left operand of assignment
aplus2.c:7:6: error: lvalue required as left operand of assignment

意思就是等号左侧应该是一个变量

书上有这几句话:

前缀和后缀形式的增值操作符都复制一份变量值的拷贝,用于周围表达式的值正是这份拷贝。前缀操作符在进行赋值之前增加变量的值,后缀操作符在进行赋值之后才增加变量的值。

//不是太明白

对于这几句话,我的理解是:

比如i++ = 10这句,先将i的值进行复制到i++(可以将i++看成值10的别名),然后再对i加1,所以这句语句执行完后,i的值是11,而i++的值是10。

同理,++i = 10这句,先对i加1,然后再将i的值复制到++i(可以将++i看成值11的别名),所以这句语句执行完后,i和++i的值是11。

++i和i++的结果是i值的拷贝,并不是变量本身,所以无法向一个值进行赋值。

++a和a++不是左值的更多相关文章

  1. 话说C++中的左值、纯右值、将亡值

    写在前面 C++中有“左值”.“右值”的概念,C++11以后,又有了“左值”.“纯右值”.“将亡值”的概念.关于这些概念,许多资料上都有介绍,本文在拾人牙慧的基础上又加入了一些自己的一些理解,同时提出 ...

  2. c++左值和右值

    c++编程中如果出现把一个函数的返回值.强行转化后的对象 作为函数的参数传进去时,编译器会报错的情况.这时候就该注意了,你需要把该函数的参数类型前加上const修饰. 原因在于c++的左值和右值有所区 ...

  3. C语言执行时报错“表达式必须是可修改的左值,无法从“const char [3]”转换为“char [120]” ”,原因:字符串不能直接赋值

    解决该问题的方法:使用strcpy函数进行字符串拷贝   原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string ...

  4. c++ 左值右值 函数模板

    1.先看一段代码,这就是一种函数模板的用法,但是红色的部分如果把a写成a++或者写成一个常量比如1,都是编译不过的,因为如果是a++的话,实际上首先是取得a的 值0,而0作为一个常量没有地址.写成1也 ...

  5. c++ 左值 和 右值

    什么是lvalue, 什么是rvalue? lvalue: 具有存储性质的对象,即lvalue对象,是指要实际占用内存空间.有内存地址的那些实体对象,例如:变量(variables).函数.函数指针等 ...

  6. C++中的左值与右值(二)

    以前以为自己把左值和右值已经弄清楚了,果然发现自己还是太年轻了,下面的这些东西是自己通过在网上拾人牙慧,加上自己的理解写的. 1. 2. 怎么区分左值和右值:知乎大神@顾露的回答. 3. 我们不能直接 ...

  7. C++变量的左值和右值

    变量和文字常量都有存储区,并且有相关的类型. 区别在于变量是寻址的,对于每一个变量,都有两个值与其相关联 1  它的数据值,存储在某个内存地址中.有时这个值也被称为对象的右值 文字常量和变量都可被用作 ...

  8. c++ 基础学习: 左值 概念cocos2d-x3.0的实际应用

    左值:概念baidu 1.2.6.2 与Cocos2d-x内存管理的结合 在2.x的使用场景中,CCArray和CCDictionary通常被分配在堆上,我们不得不需要考虑在适当的地方释放其内存.新的 ...

  9. 什么是左值(what is a lvalue)?

    引用并翻译自<C++ premier plus> 左值是可以通过地址引用的数据对象(data object),例如,变量,数组的元素,结构体的成员,引用变量,以及复引用的指针(defere ...

  10. ecos3.0编译 if_lancepci.c:528: 错误: 赋值运算的左操作数必须是左值

    /home/xin/ecos3/ecos-3.0/packages/devs/eth/amd/lancepci/v3_0/src/if_lancepci.c:528: 错误: 赋值运算的左操作数必须是 ...

随机推荐

  1. (十一)springmvc和spring的整合

    1:Maven引入相关的jar包. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...

  2. 最快得到MYSQL两个表的差集

    Mysql里不外乎就是 子查询 和 连接 两种方式. 设第一个表为table1, 第二个为table2, table1包含table2. sql为: //子查询 select table1.id fr ...

  3. 华为Python面试题

    最近在网上偶然看到此题: 有两个序列a,b,大小都为n,序列元素的值任意整形数,无序: 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小 经过一番思索,我试着用穷举法 ...

  4. DOM树节点关系

    DOM是JS中专门操作HTML页面内容的 他的三种基本使用方法是: 1.  document.getElementById(''):  ——>选取html页面中带有Id的属性名: 2.docum ...

  5. 如何用SAP WebIDE的Fiori创建向导基于ABAP OData service快速创建UI5应用

    如果我们手上已经有可以正常工作的OData服务,无论位于ABAP on-premise系统还是public上的internet OData service,都可以用SAP WebIDE里的Fiori创 ...

  6. iframe内嵌页面——跨域通讯

      <template> <div class="act-form"> <iframe :src="src" ref=" ...

  7. SP15637 GNYR04H - Mr Youngs Picture Permutations[DP]

    题目来源:POJ:http://poj.org/problem?id=2279 SPOJ:https://www.spoj.com/problems/GNYR04H/ 题意翻译 题目描述 杨先生希望为 ...

  8. js 正则表达式将 p标签替换 span标签

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. js获取文件后缀名

    function extname(filename){ if(!filename||typeof filename!='string'){ return false }; let a = filena ...

  10. 【翻译】PATH究竟是什么?

    最近,我试图向一个朋友解释他电脑上PATH变量是用来做什么的.我在我们所交流的平台‘the Slack group"写了一篇比较长的消息之后,我意识到这个主题可以写成一个很好的博客,所以开始 ...