[C]*与++优先级问题
来源:互联网 发布:苹果音频剪辑软件 编辑:程序博客网 时间:2024/05/23 13:09
从上例中我们可以看到。当 * (作为地址解析符) 和 ++ 同时作用在指针时,不管是前置还是++,都要比*有更高的优先级。比如代码中的:
int A = *parr++;
我们来一个反证:假设*的优先级比++高,那么,应先计算:
*parr 结果为: 1 (第一个元素)
然后计算 1++ ,结果为:2。
但实验发现结果为 1,这个1 又是如何来的呢?有点复杂。
首先,++优先计算,所以应先计算:parr++ 。
结果是parr指向了下一个元素:2。因为这是后置++,所以,它必须返回自己计算之前的值;所以,在改变parr之前,编译程序会生成一个临时变量,计算原先parr的值。我们假设为 old_parr 。下面是第二步操作:
A = *old_parr。
由于 old_parr 是 parr 原来的值,指向第一个元素,所以 A 得到值: 1 。
可见,后置 ++ 或 后置-- 操作,需要系统生成一个临时变量。
如果这个变量占用的内存空间很小(比如指针类型总是只有4字节),则该操作带来的,对程序速度的负面影响可以不计,如果变量很大,并且多次操作。则应在可能的情况下,尽量使用前置++或前置--操作。
- [C]*与++优先级问题
- c 优先级的问题举例
- C语言优先级的问题
- c language中的优先级问题
- c语言符号与优先级
- c中的运算符的优先级问题
- c语言运算符的优先级问题
- C语言运算符的优先级问题
- C运算符优先级的问题
- c语言中的符号优先级问题
- C语言运算符优先级问题
- 堆与优先级队列研究(C++)
- C运算符的优先级与结合
- C运算符的优先级与结合
- C语言之优先级与运算顺序
- C 运算符优先级与记忆口诀
- 串口接收线程退出与优先级问题
- 面试题:类型转换与优先级问题
- Asp过滤Html代码
- Shell 基本工作原理
- 用Visual C++在局域网实现IP多播
- 新手指南-常见编译错误诊治
- 详解IGMP(Internet组管理协议)报文及协议
- [C]*与++优先级问题
- 答复达内同学 2007-08-11
- Windows 98操作系统快捷键大全
- 数据库归来——下一代数据库扫描简介
- Visual C++程序调试方法入门
- c#开源项目网站
- NET开源项目介绍及资源推荐:序
- 初识CSDN
- MapiRule