掌握 C 递增和递减运算符:用法和最佳实践
C - 自增和自减运算符
自增运算符(++)将变量的值加1,自减运算符(--)将变量的值减1。
自增和自减运算符经常用于构造 C 中的计数循环(使用 for 循环)。它们在数组和指针运算的遍历中也有应用。
++ 和 -- 运算符是一元运算符,可以用作变量的前缀或后缀。
递增和递减运算符示例
以下示例包含多个语句,演示了具有不同变体的增量和减量运算符的使用 -
<前>05前>输出
当您运行此代码时,它将产生以下输出 -
<前>14前>示例说明
换句话说,“a++”与“++a”具有相同的效果,因为这两个表达式都将变量“a”的值加 1。同样,“a--”与“--a”具有相同的效果。
表达式“a++;”可以被视为等同于语句“a =a + 1;”。这里,右边的表达式将“a”加1,并将结果赋回1,从而将“a”的值加1。
类似地,“b--;”相当于“b =b 1;”。
增量运算符的类型
有两种类型的增量运算符 - 预增量 和后增量 .
Pre(前缀)增量运算符
在表达式中,预自增运算符在使用变量的值之前将变量的值加 1。
语法
<前>22前>示例
在下面的示例中,我们使用预自增运算符,其中“x”的值将增加 1,然后增加的值将在表达式中使用。
<前>35前>当您运行此代码时,它将产生以下输出 -
<前>44前>Post(后缀)增量运算符
在表达式中,后自增运算符在使用变量的值后将变量的值加 1。
语法
<前>52前>示例
在下面的示例中,我们使用后自增运算符,其中“x”的值将在表达式中使用,然后它会增加 1。
<前>65前>当您运行此代码时,它将产生以下输出 -
<前>77前>自减运算符的类型
有两种类型的减量运算符 - 预减量 和后减量 .
Pre(前缀)自减运算符
在表达式中,预自减运算符在使用变量的值之前将变量的值减 1。
语法
<前>83前>示例
在下面的示例中,我们使用预减运算符,其中“x”的值将减 1,然后将减少的值用于表达式中。
<前>93前>当您运行此代码时,它将产生以下输出 -
<前>101前>后置(后缀)自减运算符
在表达式中,后自减运算符在使用变量的值后将变量的值减 1。
语法
<前>118前>示例
在下面的示例中,我们使用后减运算符,其中“x”的值将在表达式中使用,然后它会减 1。
<前>123前>当您运行此代码时,它将产生以下输出 -
<前>138前>增量和减量运算符的更多示例
示例 1
以下示例重点介绍了前缀/后缀增量/减量的使用 -
<前>140前>输出
当您运行此代码时,它将产生以下输出 -
<前>153前>上面的示例表明前缀和后缀运算符对操作数变量的值具有相同的效果。但是,当这些“++”或“--”运算符与表达式中的其他运算符一起出现时,它们的行为会有所不同。
示例 2
在下面的代码中,“a”和“b”变量的初始值相同,但 printf() 函数显示不同的值 -
<前>169前>输出
运行代码并检查其输出 -
<前>173前>在第一种情况下,printf() 函数打印“x”的值,然后递增其值。在第二种情况下,首先执行增量运算符,printf()函数使用增量后的值进行打印。
自增和自减运算符的运算符优先级
C 中有许多运算符。当在表达式中使用多个运算符时,它们将按其优先顺序执行。递增和递减运算符与其他运算符一起使用时的行为不同。
当表达式包含递增或递减运算符以及其他运算符时,首先执行递增和递减运算。后缀自增和自减运算符的优先级高于前缀自增和自减运算符。
另请阅读: C 中的运算符优先级
示例 1
看看下面的例子 -
<前>180前>输出
运行代码并检查其输出 -
<前>191前>由于“x++”将“x”的值增加到 6,因此您会期望“z”也为 6。然而,结果显示“z”为 5。这是因为赋值运算符比后缀增量运算符具有更高的优先级。因此,在增加“x”之前,将“x”的现有值分配给“z”。
示例 2
看一下下面的另一个例子 -
<前>206前>输出
当您运行此代码时,它将产生以下输出 -
<前>213前>结果可能会令人困惑,因为“y”和“z”的值现在都是 6。原因是前缀增量运算符的优先级高于赋值运算符。因此,“y”首先递增,然后将其新值赋给“z”。
运算符的结合性也起着重要作用。对于递增和递减运算符,结合性是从左到右。因此,如果单个表达式中有多个自增或自减运算符,最左边的运算符将首先执行,向右移动。
示例 3
在此示例中,赋值表达式同时包含前缀和后缀运算符。
<前>223前>输出
运行代码并检查其输出 -
<前>232前>在此示例中,要完成的第一个操作是“y++”(“y”变为 6)。其次,“+”运算符将“x”(即 5)和“y”相加,结果赋给“z”为 11,然后“x++”将“x”增加到 6。
在循环中使用增量运算符
在 C 语言中,最常用的 for 循环语法如下 -
<前>245前>示例
循环体针对初始值和最终值之间的所有变量值执行,并在每轮后递增。
<前>255前>输出
当您运行此代码时,它将产生以下输出 -
<前>269前>C语言