注册 登录
编程论坛 C++教室

C++初学者,看不懂它是怎么算的,请大师指教

Clytie 发布于 2016-02-05 15:25, 2545 次点击
#include<iostream>
using namespace std;
int main()
{
    int a(3);
    cout<<a<<a++<<++a<<endl;
    cout<<a<<++a<<endl;
    cout<<a<<a--<<endl;
    cout<<a<<--a<<endl;
    return 0;
}
8 回复
#2
rjsp2016-02-05 15:40
未定义行为
凡是出这些题目的人,表明它是跟着谭浩强学的
#3
Clytie2016-02-05 15:50
回复 2楼 rjsp
不是已经给a赋值了3了吗?我是第一个cout输出545看不懂它的算法过程
#4
rjsp2016-02-05 15:58
以下是引用Clytie在2016-2-5 15:50:38的发言:

不是已经给a赋值了3了吗?我是第一个cout输出545看不懂它的算法过程
跟a是不是赋值了有什么关系?!
你可以google一下“副作用与序列点”以及“参数求值顺序”
#5
Clytie2016-02-05 16:07
回复 4楼 rjsp
理解了,谢谢
#6
wmf20142016-02-05 19:36
回复 4楼 rjsp
#7
hjx11202016-02-05 20:10
这种题目有什么用,作死啊
#8
阳,飞翔2016-02-28 13:58
表示0基础,看不懂
#9
hjx11202016-02-29 14:41
换个思维可能就比较好理解了

早上小明上班去如花开的包子店买包子,
那么问题来了,
要是小明先给钱给如花,那么这就表示“++a”,
要是如花先给了包子小明在付钱,这就是表示“a++”
不管是小明先付钱还是如花先给包子,小明同学都是要付钱给如花的
所以,不管是“++a”还是“a++”最后的值都是一样的

1