关于指针的简单问题,请高手进来

来源:百度知道 编辑:UC知道 时间:2024/06/17 10:19:18
表达式一:
#include <iostream.h>

int main()
{
char* s="he";
while(*s)
{
s++;
}
cout<<*(s-1)<<endl;
return 0;
}

表达式二:

#include <iostream.h>

int main()
{
char* s="he";
while(*s++)
{

}
cout<<*(s-1)<<endl;
return 0;
}
我要问的问题是:
两个表达式的结果一样吗?为什么?
(我在vc6.0下,两个式子编译都通过,但是,执行结果却不一样,这是为什么呢?我想知道象while(*s++)
{ } 这样的式子的执行顺序,谢谢:-)

表达式二多执行了一次s+1,因为在判断*s时,就要绑定执行一次++操作

++运算符优先级高于*所以先执行s++,但与*结合的值是s未加之前的s的地址所以表达式二所执行的结果比表达式一最后会多一次自增

kkcgs is right;