您的位置:首页 > 其它

【C】使用自加(++)和自减(--)运算符时容易出的错误

2014-07-10 03:09 330 查看



例如:

int main()

{ int *p, a[5]={1, 3, 5, 7, 9};

p = a;

printf("%d", *p++);

}

[/code]

有的人认为
*p++
的作用是先使p加1, 即指向第一个元素
a[1]
处,
然后输出第1个元素
a[0]
的值3.

其实不然,

由于++的优先级高于*因此先执行
p++
, 而
p++
的作用是先用p的原值进行运算(进行*p的运算)
,然后再使p加1.

结论是先输出a[0]的值,然后在使p加1. 如果是*(++p), 则先使p指向a[1],然后输出a[1]的值.

在使用++和--运算符时,一定要避免歧义性, 如无把握, 宁可多加括号.

如上面的*p++可改为*(p++).

以上内容:摘自C程序设计(第四版) -- p363

附加:

下面举个例子对比一下(*p)++
#include<stdio.h>

int main()

{

int a[5] = {1,2,3,4,5};

int *p = a;

(*p)++;

printf("%d\n", (*p)++);

return 0;

}

[/code]

运行结果:2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: