这两种表达方式不同。 下面来看一个示例代码来了解这两个表达式之间的区别。
示例1:
#include <stdio.h> int main(void) { int aiData[5] = {100,200,30,40,50}; int *piData = aiData; ++*piData; printf(aiData[0] = %d, aiData[1] = %d, *piData = %d, aiData[0], aiData[1], *piData); return 0; }
输出:
101 , 200 , 101
解释:
在上面的示例中,涉及两个运算符,并且都具有相同的优先级,具有从右到左的关联性。 所以上面的表达式 ++*p
等价于 ++ (*p)
。 换句话说,它是值的预增量,输出是 101、200、101。
示例2:
#include <stdio.h> int main(void) { int aiData[5] = {100,200,30,40,50}; int *piData = aiData; *++piData; printf(aiData[0] = %d, aiData[1] = %d, *piData = %d, aiData[0], aiData[1], *piData); return 0; }
输出:
100、200、200
解释:
在上面的示例中,涉及两个运算符,并且它们具有相同的从右到左关联性的优先级。 所以上面的表达式 *++p
等价于 *(++p)
。 换句话说,它是地址的预增量,输出是 100, 200,200。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。