标题: (*p)++ 与(*p++) 与 *(p++)问题 [打印本页] 作者: 默默者 时间: 2014-4-28 12:54 标题: (*p)++ 与(*p++) 与 *(p++)问题 请问一下:* 与 ++ 的计算级别 是哪一个高?查了一下好像是同级别的。请给解释一下下面打印的结果
int *p;
int num = 5;
p = #//地址传递
printf("The address of num is : %p\n",p);//取这个num的内存地址
printf("The value of num is : %d\n",*p);//取这个num的值
printf("The *p++ is : %d\n",*p++);
printf("The (*p)++ is : %d\n",(*p)++);
printf("The *(p++) is : %d\n",*(p++));
printf("The (*p)++ is : %d\n",(*p)++);作者: 兰闻天 时间: 2014-4-28 13:05 本帖最后由 兰闻天 于 2014-4-28 15:01 编辑
int *p;
int num = 5;
p = #//地址传递
printf("The address of num is : %p\n",p);//取这个num的内存地址 例如0xffff04
printf("The value of num is : %d\n",*p);//取这个num的值 5
printf("The *p++ is : %d\n",*p++); //这个先运算的p++,虽然加1了。可返回的值仍然是p原来的值,所以相当于输出的还是*p(num),但运行以后p存的地址值已经修改了
printf("The (*p)++ is : %d\n",(*p)++);//这个你需要吧前面的注释了。因为上一行已经把p存的地址改了,(*p)相当于5,5++,
printf("The *(p++) is : %d\n",*(p++));//这个是先找到地址,在地址上加4个字节,查询这个新地址0xffff08的值,因为未定义,所以是个不确定的数
printf("The (*p)++ is : %d\n",(*p)++);和第四个是一样的吧 作者: 小海 时间: 2014-4-28 18:02
自增与自减的运算符优先顺序要比*高一级,所以先执行++,再执行*作者: NenKeer 时间: 2014-4-28 22:25
*和++都是单目运算符,单目运算符的运算优先级相同时,是自由向左结合运算的,知道这个了,上面代码应该很容易出答案了作者: liulinjie 时间: 2014-4-28 22:30 本帖最后由 liulinjie 于 2014-4-28 22:49 编辑