//
// main.cpp
// 【记录】自加、自减(补充)
//
// Created by T.P on 2018/3/7.
// Copyright © 2018年 T.P. All rights reserved.
//
#include <iostream>
using namespace std;
int main()
{
int val=5;
cout<<"val="<<val<<endl;
cout<<val++<<","<<++val<<","<<val--<<","<<--val<<endl;
cout<<"val="<<val<<endl;
return 0;
}
这段代码,按照我们的理解它应该输出
val=5
5,7,7,5
val=5
实际上它的输出根据“编译器”的不同,结果可能不同
下面笔者就VS2017和Xcode运行这段代码进行了验证
VS2017
Xcode
小结:待填坑
C++程序设计(第4版),郑莉,课件解释
最后一句的输出结果4,5,4,5,这是为什么呢?
我们期望的输出结果,似乎应该是:5, 7, 7, 5。
这是运行顺序问题,按照从右向左的顺序计算各输出项的值,
然后按照从左向右的顺序进行输出。
因此,在本例中,首先计算的是--val1,
而不是val1++。于是出现了最后的输出结果。