C语言自增(++)自减(--)运算符
C语言提供了两个特殊的运算符,通常在其他计算机语言中找不到,即自增运算符
这两个运算符有以下几种形式:
【示例】前置加和后置加的区别:
(1) a=10 b=10
(2) a=10 c=9
但是当表达式中连续出现多个加号(+)或减号(-)时,如何区分它们是增量运算符,还是加法或减法运算符呢?例如:
在C语言中,语句分析遵循“最长匹配”原则。即如果在两个运算分量之间连续出现多个表示运算符的字符(中间没有空格),那么,在确保有意义的条件下,则从左到右尽可能多地将若干个字符组成一个运算符,所以,上面的表达式就等价于 y=(i++)+j,而不是 y=i+(++j)。
如果读者在录入程序时有类似的操作,可以在运算符之间加上空格,如 i+++j,或者加上圆括号,作为整体部分处理,如 y=i+(++j)。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
++
和自减运算符--
。它们都是单目运算符,运算的结果是使变量值增 1 或减 1,可以放在变量之前,称为前置运算;也可以放在变量之后,称为后置运算。它们都具有“右结合性”。这两个运算符有以下几种形式:
++i /*相当于i=i+1, i自增1后再参与其他运算*/ --i /*相当于i=i-1 ,i自减1后再参与其他运算*/ i++ /*相当于i=i+1 ,i参与运算后,i的值再自增1*/ i-- /*相当于i=i-1 ,i参与运算后,i的值再自减1*/
【示例】前置加和后置加的区别:
#include <stdio.h> int main() { int a,b,c; a=9; b=++a; /*前置加*/ printf(" (1) a=%d b=%d\n",a,b); a=9; c=a++; /*后置加*/ printf(" (2) a=%d c=%d\n",a,c); }运行结果:
(1) a=10 b=10
(2) a=10 c=9
范例分析
本范例中,变量 a 开始赋初值为 9,执行 b=++a 时,相当于先执行 a=a+1=10,再将 10 赋给变量 b,然后输出此时 a、b 的值。a 的值又重新赋值为 9,执行 c=a++,相当于先执行 c=a,c 的值为 9,然后才执行 a++,即 a=a+1=10,此时 a、c 的值分别为 10 和 9。但是当表达式中连续出现多个加号(+)或减号(-)时,如何区分它们是增量运算符,还是加法或减法运算符呢?例如:
y=i+++j;
是应该理解成 y=i+(++j),还是 y=(i++)+j呢?在C语言中,语句分析遵循“最长匹配”原则。即如果在两个运算分量之间连续出现多个表示运算符的字符(中间没有空格),那么,在确保有意义的条件下,则从左到右尽可能多地将若干个字符组成一个运算符,所以,上面的表达式就等价于 y=(i++)+j,而不是 y=i+(++j)。
如果读者在录入程序时有类似的操作,可以在运算符之间加上空格,如 i+++j,或者加上圆括号,作为整体部分处理,如 y=i+(++j)。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。