奇怪的小问题?
#include <iostream.h>
main(){
int a[5]={1,2,3,4,5};
int *p=a;
cout<<*p<<" ";cout<<*p++;
} 为什么结果是 1 1
#include <iostream.h>
main(){
int a[5]={1,2,3,4,5};
int *p=a;
cout<<*p<<" "<<*p++;
} 为什么结果是2 1 请大家2个都解释下
问题点数:10、回复次数:6Top
1 楼bm1408(向va_list学习~不用VC好多年~)回复于 2005-11-18 16:36:48 得分 2
main(){
int a[5]={1,2,3,4,5};
int *p=a;
cout<<*p<<" ";cout<<*p++;
}
这个没有什么好说的,就是1,1,
*p++是在使用后再加1的,Top
2 楼code8238(二进制动物)回复于 2005-11-18 16:41:37 得分 2
cout<<*p<<" ";cout<<*p++;
这是两句话,值分别压栈,压栈之后p的值才变化
cout<<*p<<" "<<*p++;
这是一句话,后面的p的值先压栈,压栈之后p的值+1,再将已经变化的p(前面的)压栈Top
3 楼eternall(逍遥)回复于 2005-11-18 16:51:44 得分 2
谁能解释一下第二个?Top
4 楼lujianping(lujianping)回复于 2005-11-18 16:57:56 得分 2
简单得问题,C语言得标准就是一个左入栈的,
cout << *p << " " << *p++ ;
执行的顺序是*p++;
*p = 1 ; p ++ ;
然后执行*p = 2;
这样,运行的结果就是2 , 1 了。Top
5 楼code8238(二进制动物)回复于 2005-11-18 16:58:37 得分 2
<<操作符的参数是从右向左压栈的Top
6 楼huwei001982(凶猛的小狗)回复于 2005-11-18 17:20:29 得分 0
压栈的顺序, 先执行 *p++, 然后p就指向第二个元素 2
第一个没什么说的
Top




