递增运算符是单目运算符,C语言中有两种非常有用的运算符++和--,分别称为递增和递减运算符,对变数执行加1或减1操作,且运算结果仍赋给该变数。
基本介绍
- 中文名:递增运行符
- 运算符:++或--
- 所属:C语言
- 运算注意:运算符和单目运算符属同一级
C语言中的递增、递减运算符
递增、递减运算符和负号一样都是单目运算符,统称单项算术运算符,如表所示:
运算符 | 名称 | 示例 | 等价表达式 |
++ | 递增 | i++或++i | i=i+1 |
-- | 递减 | i--或--i | i=i-1 |
++和--既可写在变数之前,称为前置运算,如:++a;--a;++和--也可以写在变数之后,称为后置运算,如:a++;a--。
对单独一个变数实行前置运算或后置运算,其结果是相同的,都是使该变数的值增加或减少1。然而,当它们用在表达式中,其效果就不同了。当递增或递减运算符放在其运算变数前面进行前置运算时,C语言在使用该变数之前进行递增或递减操作;如果运算符在运算变数的后面进行后置运算,那幺,C语言在使用运算变数的值之后执行递增或递减运算。
分析以下程式的输出结果。
#include <stdio.h>
void main()
{
int i1=2,i2=2,j1,j2;
j1=i1++;j2=++i2; /*①*/
printf("%d,%d,",j1,j2); /*②*/
printf("%d,%d\n",i1++,++i2); /*③*/
}
输出结果是:
2,3,3,4
解释
执行语句①之后,j1的值为2(因为i1++先返回i1的值,再将i1增1),j2的值为3(因为++i2将i2先增1后返回i2的值),i1和i2的值均为3。执行语句②输出2和3。执行语句③时,输出3和4。
注意
++和--运算符和单目负号运算符属于同一优先权,也就是说比*、/、%都要高,同样是按从右到左结合的。如-i++相当于-(i++)。
php递增/递减运算符
php 支持 C 风格的前/后递增与递减运算符。
注: 递增/递减运算符不影响布尔值。递减 NULL 值也没有效果,但是递增 NULL 的结果是 1。
一个简单的示例脚本:
<?phpecho "<h3>Postincrement</h3>";$a = 5;echo "Should be 5: " . $a++ . "<br />/n";echo "Should be 6: " . $a . "<br />/n";echo "<h3>Preincrement</h3>";$a = 5;echo "Should be 6: " . ++$a . "<br />/n";echo "Should be 6: " . $a . "<br />/n";echo "<h3>Postdecrement</h3>";$a = 5;echo "Should be 5: " . $a-- . "<br />/n";echo "Should be 4: " . $a . "<br />/n";echo "<h3>Predecrement</h3>";$a = 5;echo "Should be 4: " . --$a . "<br />/n";echo "Should be 4: " . $a . "<br />/n";?>
在处理字元变数的算数运算时,php 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 'Z'+1 将得到 'AA',而在 C 中,'Z'+1 将得到 '['(ord('Z') == 90,ord('[') == 91)。注意字元变数只能递增,不能递减。
例子 15-4. 涉及字元变数的算数运算
<?php$i = 'W';for ($n=0; $n<6; $n++) { echo ++$i . "/n";}?>上例将输出:
XYZAAABAC |
递增或递减布尔值没有效果。