编程很纠结的一个问题便是a--和--a。

#include<iostream>
using namespace std;
int main(int argc, char const *argv[])
{
int a=;
int b=a--;
//a-- =5;
cout<<b<<" "<<a<<endl;
a=;
b=--a;
cout<<b<<" "<<a<<endl;
a=;
int c=a---;
cout<<b<<" "<<a<<" "<<c<<" "<<endl;
a=;
int d=--a-;
cout<<b<<" "<<a<<" "<<c<<" "<<d<<" "<<endl;
return ;
}

2 1
1 1
1 1 -3
1 1 -3 -4

结果明白了一切a--是先把a的值用来执行其他的语句,最后才执行a=a-1的,所以a--是不能用来做左值的,因为一个表达式不能同时执行两条语句(a=5和a--)

而--a是把a=a-1的结果返回来的,是可以做左值的

a---5的顺序是先执行a-5,再执行a=a-1
--a-5的顺序是先执行a=a-1,再执行a-5
而这可以总结:
不要嵌套使用++--操作,单独用就好

随机推荐

  1. 《学习OpenCV》课后习题解答9

    题目:(P126) 创建一个程序,使其读入并显示一幅图像.当用户鼠标点击图像时,获取图像对应像素的颜色值(BGR),并在图像上点击鼠标处用文本将颜色值显示出来. 解答: 本题关键是会用cvGet2D获 ...

  2. 第四次JAVA作业

    public class TvbDog { public static void main(String[] args) {  Dog per=new Dog("陈狗"," ...

  3. win7 redis

    <?php /* windows下php安装redis扩展 php_redis下载地址:https://pecl.php.net/package/redis 点击redis安装版本后面的 DLL ...

  4. vue中表单的动态绑定

    有一个表单: <el-form :model="configForm"> </el-form> 如果configForm初始化为{},此对象是动态变化的,如 ...

  5. dp类模板

    1.n串最长公共子序列 #include<cstdio> #include<cstring> #include<algorithm> using namespace ...

  6. [Leetcode] Length of last word 最后一个单词的长度

    Given a string s consists of upper/lower-case alphabets and empty space characters' ', return the le ...

  7. Expect使用小记

    By francis_hao    May 31,2017   本文翻译了部分Expect的man手册,只选取了个人常用的功能,因此并不完善.   Expect是一个可以和交互式程序对话的程序 概述 ...

  8. 如何使用Eclipse调试framework

    1.下载Eclipse EE(下载地址:http://www.eclipse.org/downloads/) 2.下载并安装JDK(下载地址:http://www.oracle.com/technet ...

  9. HDU 3446 有贪心思想的01背包

    Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) ...

  10. 前缀统计 [Trie]

    前缀统计 描述 给定N个字符串S1,S2...SN,接下来进行M次询问,每次询问给定一个字符串T,求S1-SN中有多少个字符串是T的前缀.输入字符串的总长度不超过10^6,仅包含小写字母. 输入格式 ...