企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 【知识精讲】自减和自增运算符 ## Part1 在使用循环结构的时候,我们经常会需要维护一个计数器变量,每执行一次变量就让计数器增加 1。在上一章的`while`循环中,我们使用了变量`i`作为计数器变量,使用代码`i=i+1;`来完成自增运算。这段代码的意思是,取出`i`原有的值,加1之后赋给`i`作为`i`新的值。大家是不是觉得这么写很麻烦?事实上,C++ 语言提供了一种更加简单的运算符来完成这个操作,称为**自增运算符**。具体的写法是在变量后面加上两个连续的加号。我们上一章的循环中使用了这样的代码: ~~~ while(i <= 10){ sum += i; i = i + 1; } ~~~ 改用自增运算符之后就可以变成这个样子: ~~~ while(i <= 10){ sum += i; i++; } ~~~ ## Part2 除了自增运算符之外,还有自减运算符——写法就是把自增运算符的两个连续的加号,换成两个连续的减号。比如上面的代码,如果改成从 101010 加到 111 的话,就会变成这样: ~~~ i = 10; while(i>0){ sum += i; i--; } ~~~ 自增和自减运算符,除了可以像我们刚才演示的那样后置使用之外,还可以前置使用——例如`++i;`这样的写法。此外,自增运算符不仅可以在单独一句语句中使用,还可以在其他的表达式中配合使用。比如,上面的循环体: ~~~ sum += i; i++; ~~~ 就可以合并成这样一句语句: ~~~ sum+=i++; ~~~ 这一句语句,与上面这两句语句的效果是相同的。 ## Part3 需要说明的是,自增/自减运算符在表达式中前置使用和后置使用的效果是不同的——在接下来的课程中,我们将会实际演示这两者的差别。另外,像`sum+=i++;`这样的语句,虽然是正确的,但是在实际开发中最好**不要这么使用**——这会对代码的可读性和可维护性带来负面影响。 很多同学在使用我国某本被很多学校广泛使用的 C/C++ 编程语言教材,这本书中曾经向大家介绍了诸如`i++++i;`之类的奇奇怪怪的写法,并且大力提倡这些“奇技淫巧”。如果同学们“有幸”看过这本教材的话,那请务必**忘掉书上说的内容**。 事实上,像`i++++i;`这样的语句,是一种 C++ 标准未定义的行为,你可以认为这是错误的代码——具体地说,对于这样的代码,版本较新的 g++ 和 MSVC 编译器都会报错,无法通过编译。所以,如果有同学看过该教材,并且想要继续学习C++ 语言的话,那么请务必忘掉这些内容。