由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - c++ 得最基本问题
相关主题
[提议]算法coding题目需要太傻那样的黑宝书
相关话题的讨论汇总
话题: cout话题: char话题: c++话题: mystack话题: endl
进入Programming版参与讨论
1 (共1页)
m******t
发帖数: 4077
1
一个linked list实现的stack
myStack ss;
ss.push('c');
ss.push('a');
cout < 这样输出的结果是 ca
myStack ss;
ss.push('c');
ss.push('a');
char s1 = ss.pop();
char s2 = ss.pop();
cout < 这样就对了,输出的结果是 ac
请问问题出在哪里?谢谢。
o***g
发帖数: 2784
2
猜是<<的运算顺序的问题

【在 m******t 的大作中提到】
: 一个linked list实现的stack
: myStack ss;
: ss.push('c');
: ss.push('a');
: cout <: 这样输出的结果是 ca
: myStack ss;
: ss.push('c');
: ss.push('a');
: char s1 = ss.pop();

p***e
发帖数: 183
3
Operators in C++ are implemented as function calls.
cout << ss.pop() << ...
r*******y
发帖数: 290
4
我怎么记得STL里面stack的函数原型是:
void pop();
void push(const T&);
const T& top() const;
T& top();

【在 m******t 的大作中提到】
: 一个linked list实现的stack
: myStack ss;
: ss.push('c');
: ss.push('a');
: cout <: 这样输出的结果是 ca
: myStack ss;
: ss.push('c');
: ss.push('a');
: char s1 = ss.pop();

m**o
发帖数: 56
5
nod,lz多半是自己编的

【在 r*******y 的大作中提到】
: 我怎么记得STL里面stack的函数原型是:
: void pop();
: void push(const T&);
: const T& top() const;
: T& top();

m******t
发帖数: 4077
6
我是自己写的。用引用应该更合适。谢谢指出。

【在 r*******y 的大作中提到】
: 我怎么记得STL里面stack的函数原型是:
: void pop();
: void push(const T&);
: const T& top() const;
: T& top();

f*******y
发帖数: 988
7
不是引用的问题,是pop和top要分开,主要是exception的问题

【在 m******t 的大作中提到】
: 我是自己写的。用引用应该更合适。谢谢指出。
y**c
发帖数: 6307
8
int a(0);
cout<<(a+=1)<<" "<<(a+=2)< 我得到的结果是
3 2
按照书上的说法,cout< (cout.operator<<(a)).operator<<(b)
所以我也比较迷惑了。
e*a
发帖数: 32
9
this is undefined....

【在 y**c 的大作中提到】
: int a(0);
: cout<<(a+=1)<<" "<<(a+=2)<: 我得到的结果是
: 3 2
: 按照书上的说法,cout<: (cout.operator<<(a)).operator<<(b)
: 所以我也比较迷惑了。

X****r
发帖数: 3557
10
C++里一个重要的概念是序列点(sequence point),当程序运行到一个序列点的时候,
之前的所有副作用都已完成而之后的任何副作用尚未开始。两个相邻的序列点之间的
副作用发生的顺序不一定。同一个变量在两个相邻的序列点之间最多只能被修改一次。
C++标准的1.8里给出了序列点的详细定义并列举了所有的序列点。函数调用之前有
一个序列点,是在函数的所有参数都计算完毕之后而在函数体执行之前。至于函数
参数之间,包括成员函数所对应的对象的计算,它们的先后顺序都是不确定的。
比如f(a,g(b,c));如果a,b,c都是表达式的话,那它们的计算顺序是不确定的。
改换一下形式就是你的例子了。

【在 y**c 的大作中提到】
: int a(0);
: cout<<(a+=1)<<" "<<(a+=2)<: 我得到的结果是
: 3 2
: 按照书上的说法,cout<: (cout.operator<<(a)).operator<<(b)
: 所以我也比较迷惑了。

y**c
发帖数: 6307
11
谢谢。:)

候,

【在 X****r 的大作中提到】
: C++里一个重要的概念是序列点(sequence point),当程序运行到一个序列点的时候,
: 之前的所有副作用都已完成而之后的任何副作用尚未开始。两个相邻的序列点之间的
: 副作用发生的顺序不一定。同一个变量在两个相邻的序列点之间最多只能被修改一次。
: C++标准的1.8里给出了序列点的详细定义并列举了所有的序列点。函数调用之前有
: 一个序列点,是在函数的所有参数都计算完毕之后而在函数体执行之前。至于函数
: 参数之间,包括成员函数所对应的对象的计算,它们的先后顺序都是不确定的。
: 比如f(a,g(b,c));如果a,b,c都是表达式的话,那它们的计算顺序是不确定的。
: 改换一下形式就是你的例子了。

1 (共1页)
进入Programming版参与讨论
相关主题
[提议]算法coding题目需要太傻那样的黑宝书
相关话题的讨论汇总
话题: cout话题: char话题: c++话题: mystack话题: endl