首先,奉劝楼主不要再纠缠 i++*++i 诸如此类的代码了!
这样的代码极其 不规范 ,它的行为是 未定义 的!!!
不同的编译器,可以有不同的运算结果!
但有一点可以确定:执行之后,i值增加了2!而中间的计算过程未定义!
TurboC、BorlandC:输出 5
VS2010(Visual C++ 11):输出 9
gcc:未作测试,你可以试试看
详细请查看我的博客文章:http://hi.baidu.com/chenqa08/blog/item/108ea51cc7e6fa4efa19b841.html
#include "stdafx.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
static int a[10]={1,3,5,7,9};
int *p=a;
int *p1=a;
printf("%d*%d=%d\n",(*(p1++)),(*(++p1)),(*(p++))*(*(++p)));//中间的星号是乘号,其它你就明白了
return 0;
}
**++p
这里的第一个*是乘的意思
第二个*才是取值
厉害啊!