微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

表达式

这两种表达方式不同。 下面来看一个示例代码来了解这两个表达式之间的区别。

示例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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐