C语言中递增、递减运算符前缀后缀模式深入理解 |
您所在的位置:网站首页 › 递增递减怎么算 › C语言中递增、递减运算符前缀后缀模式深入理解 |
文章目录
前言一、递增运算符二、递减运算符三、两条规则四、执行时间五、总结
前言
在上学的时候,总是搞不清楚 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 |