关于vc++中自加一运算符的问题

发布时间:2024-05-19 20:24 发布:上海旅游网

问题描述:

#include <iostream.h>
void fun(int *);
void main()
{
for (int i=0;i<3;i++)
{
fun(&i);
cout << i << " ";
}
cout << endl;
}
//---------问题----------------
void fun(int *n)
{
++*n;
}

在上面的代码中,将++运算符放在*n前面和后面得出的结果为什么会不同?

++运算符在单目运算时放在前面或者后面结果不是应该相同的吗?

问题解答:

前缀++的优先级比*低! ++*n 先运行*n 是i的值!然后执行++
后缀++的优先级比*高!*n++ 先运行n++,n是个指针,n++指向下一个地址!不是i 的地址

当然不一样, 放在前面是先加再取值,放在后面是先取值再加。

++运算符和*运算符的优先级不一样 放后面得改为(*n)++;
*n++的话先把n++也就是说先把指针指向地址++(这一加在32位中就加了4),在用*取那个地址的数当然不是原来的数了
总言之 你那个函数只是做了对n指针指向的地方的下一个数读出操作 没有对原来的n做什么操作 在主函数看来就是对n没做什么操作

热点新闻