一道关于指针的题,你能全答对么(0分)

  • 主题发起人 主题发起人 rabbitlzx
  • 开始时间 开始时间
R

rabbitlzx

Unregistered / Unconfirmed
GUEST, unregistred user!
#include <iostream>
using namespace std;
void main()
{
char s[]= "desolate";
char* p = s;
cout<<"*p++ == " <<*p++ <<endl;
cout<<"*(p++) == " <<*(p++) <<endl;
cout<<"(*p)++ == " <<(*p)++ <<endl;
cout<<"*++p == " <<*++p <<endl;
cout<<"*(++p) == " <<*(++p) <<endl;
cout<<"++*p == " <<++*p <<endl;
cout<<"++(*p) == " <<++(*p) <<endl;

}
运行结果:
*p++ == d
*(p++) == e
(*p)++ == s
*++p == o
*(++p) == l
++*p == m
++(*p) == n
===================================
那个*(p++) == e 是怎么回事呢?不理解
 
没人知道是怎么回事么?我问得问题都这么难么?还是高手不屑回答
 
终于知道为什么了
 
括号的优先级高于*
 
*(p++) == e
是p指针加一后再取p++地址所对应的值吧
 
应该是 *() 的运算优先于 p++ 的运算
确实能够迷惑人!
因为我们自然而然会想“括号优先级大”,先运行括号里面的
[:D][:D]
 
searoom说得对
 
上学的时候好象老师特别喜欢用无聊的问题来考试,可实用意义不大,
 
假如是这样:
*(p+1), 则是先算括号里的, *(p++)是特例.
 
是啊,这种题也就在面试或考试中出吧
 
后退
顶部