C语言中递增、递减运算符前缀后缀模式深入理解

您所在的位置:网站首页 递增递减怎么算 C语言中递增、递减运算符前缀后缀模式深入理解

C语言中递增、递减运算符前缀后缀模式深入理解

#C语言中递增、递减运算符前缀后缀模式深入理解| 来源: 网络整理| 查看: 265

文章目录 前言一、递增运算符二、递减运算符三、两条规则四、执行时间五、总结

前言

在上学的时候,总是搞不清楚 i++ 与 ++i 之间的区别,最近翻看C Primer Plus,总算深入理解了一下这两种模式之间的区别和具体工作流程。

一、递增运算符

递增运算符执行简单的任务,将其运算对象递增1。该运算符以两种方式出现。第一种,++出现在作用的变量前面,称为前缀模式;第二张,++出现在作用的变量后面,称为后缀模式。

这两种模式的主要区别在于递增行为发生的时间。

下面的程序示例说明了递增运算符两种模式是怎么工作的。

#include int main(void){ int a = 1, b = 1; int a_post, pre_b; a_post = a++; // 后缀递增 pre_b = ++b; // 前缀递增 printf("a a_post b pre_b \n"); printf("%1d %5d %5d %5d\n", a, a_post, b, pre_b); return 0;` }

运行该程序后,其输出如下:

a a_post b pre_b 2 1 2 2

a和b都递增了1,但是,a_post是a递增之前的值,而pre_b是b递增之后的值,这就是++的前缀形式和后缀形式之间的区别。

前缀形式 q = 2*++a; 首先,a递增1; 然后,2乘以a,并将结果赋值给q

后缀形式 q = 2*a++; 首先,2乘以a,并将结果赋值给q; 然后,a递增1

当单独使用递增运算符时(如i++;),使用哪种形式都没关系,但当运算符和运算对象时更复杂表达式的一部分时,两种形式的效果将会不同。

例如 while(++shoe < 18.5)

该条件相当于提供了一个鞋子尺码到18的表,如果使用shoe++而不是++shoe,尺码表会增至19,因为shoe会与18.5比较后才递增,而不是先递增在比较。

当然,使用下面这种形式也没错:

shoe = shoe + 1;

只不过,有人会怀疑你是不是真正的C程序员。哈哈

如果前缀和后缀形式在代码中会产生不同的影响,那么最好不要这样使用。

例如,不要使用这样的语句: b = ++i; // 如果使用i++,将会得到不同的结果 应该使用这样的语句: ++i; b = i; // 无论上面使用的前缀形式还是后缀形式,都不会影响b的值

二、递减运算符

参考上面递增运算符

三、两条规则

不要一次使用太多递增运算符,例如:

While (num


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3