永发信息网

C++代码: int a=20, *pa; pa=&a; *pa=a++;cout<<*pa<<endl; 输出是20,但不应该是21吗?求具体解释~

答案:4  悬赏:30  手机版
解决时间 2021-03-25 04:51
  • 提问者网友:捧腹剧
  • 2021-03-24 14:47
C++代码: int a=20, *pa; pa=&a; *pa=a++;cout<<*pa<<endl; 输出是20,但不应该是21吗?求具体解释~
最佳答案
  • 五星知识达人网友:何以畏孤独
  • 2021-03-24 15:14
pa=&a 相当于用指针pa,保存变量a的地址。
此时*pa=20;(因为指针pa存的是a的地址,因为a是20)
*pa=a++可以看成:
*pa=a;
a++;
此时a=21; 由于指针是pa保存a的地址的,a值变了,a++ 是在*pa=a后,在自己加的,a值变了,所以指针p跟着变 就是*p=21;
我用vs2010 结果就是21,
不是21那是编辑器的问题.....

如果*p=++a;可看成:
a=a+1; a就21
*p=a; *p还是为21
结果都是21
全部回答
  • 1楼网友:舍身薄凉客
  • 2021-03-24 18:22
如果真的是21的话,那只能是编译器的原因,我在vs下就是21 ,如果Dev C++支持标准C++的话那么就应该是21。
  • 2楼网友:躲不过心动
  • 2021-03-24 17:23
应该是20啊
pa=&a; 这个是将a的地址赋值给指针pa,现在pa保存的时a的地址。
*pa=a++;这句将指针pa的值等于a的值,但是此时a的值还是20,没有变啊!*pa=a++;
相当于*pa=a;a=a+1;
要是这句改成*pa=++a; 那么cout<<*pa<
  • 3楼网友:蕴藏春秋
  • 2021-03-24 15:57
//a++和++a不同
*pa=a++;    //a增加后返回的仍是原来的值
*pa=++a;    //才是a增加后返回增加后的值,这样又把他改成未增加的值了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯