程序员 · 高频练习

++i 和 i++ 在表达式中有什么区别?

初级 单选题 第 717 题 中等 程序员自增运算符表达式求值程序设计基础
题目

在类 C 语言中,变量 i 的初值为 5。表达式 `a = ++i` 通常会先让 i 加 1,再把新值赋给 a;而表达式 `a = i++` 通常会先把 i 的原值赋给 a,再让 i 加 1。关于二者的理解,较准确的是()。

A 前置自增先加再用,后置自增先用再加
B 二者都只会让 i 变成字符串
C 前置自增会删除变量,后置自增会创建数据库
D 二者在任何表达式中都完全没有差别
题目类型:原创高频练习题 用途:用于帮助理解程序员相关考点和答案解析,不等同于官方真题。
正确答案
A
答案解析

前置自增 `++i` 和后置自增 `i++` 都会使变量 i 增加 1,但它们在表达式中返回的值不同。前置自增先改变变量,再使用改变后的值;后置自增先使用原值,再完成自增。若只是单独写一行 `i++;` 或 `++i;`,最终 i 都加 1;一旦参与赋值、比较或函数参数,差异就会体现出来。

选项分析

A

正确。前置自增返回自增后的值,后置自增返回自增前的值。

B

错误。自增运算处理数值变化,不会自动把变量变成字符串。

C

错误。自增运算和删除变量、创建数据库没有关系。

D

错误。单独使用时最终结果可能一样,但参与表达式时返回值不同。

本题为什么容易错

很多初学者只记住 i 最后都会加 1,于是忽略了表达式当前使用的是哪个值。软考程序题常把自增放到赋值语句、判断语句或数组下标里考,这时就要先判断“先用还是先加”。

先看结论

简短答案

++i 和 i++ 在表达式中有什么区别,正确答案是 A(前置自增先加再用,后置自增先用再加)。前置自增 `++i` 和后置自增 `i++` 都会使变量 i 增加 1,但它们在表达式中返回的值不同。前置自增先改变变量,再使用改变后的值;后置自增先使用原值,再完成自增。若只是单独写一行 `i++;` 或 `++i;`,最终 i 都加 1;一旦参与赋值、比较或函数参数,差异就会体现出来。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
前置自增先加再用,后置自增先用再加 本题正确答案 正确。前置自增返回自增后的值,后置自增返回自增前的值。 看到题干核心场景时优先联想到它
二者都只会让 i 变成字符串 本题干扰项 错误。自增运算处理数值变化,不会自动把变量变成字符串。 看到该词不要急着选,先判断是否真正解决题干问题
前置自增会删除变量,后置自增会创建数据库 本题干扰项 错误。自增运算和删除变量、创建数据库没有关系。 看到该词不要急着选,先判断是否真正解决题干问题
二者在任何表达式中都完全没有差别 本题干扰项 错误。单独使用时最终结果可能一样,但参与表达式时返回值不同。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 二者都只会让 i 变成字符串:错误。自增运算处理数值变化,不会自动把变量变成字符串。
  • 前置自增会删除变量,后置自增会创建数据库:错误。自增运算和删除变量、创建数据库没有关系。
  • 二者在任何表达式中都完全没有差别:错误。单独使用时最终结果可能一样,但参与表达式时返回值不同。
复习

知识点详解

自增运算符是程序员基础题里很常见的小陷阱。`++i` 和 `i++` 的共同点是都会让 i 增加 1,差别是表达式值。比如 `i=5; a=++i;` 执行后 i 为 6,a 也为 6;`i=5; a=i++;` 执行后 i 为 6,但 a 为 5。考试一般不会深挖未定义行为或语言标准细节,而是考这种基础顺序。需要注意的是,不同语言对复杂表达式求值细节可能不同,所以做软考基础题时按题干给出的语境判断,写真实代码时尽量避免 `b = i++ + ++i` 这种可读性差、容易出错的写法。

备考速记

速记:符号在前,先加;符号在后,后加。

程序设计基础在程序设计基础场景中的作用

程序设计基础在本题中的核心价值,是解决“在类 C 语言中,变量 i 的初值为 5。表达式 `a = ++i` 通常会先让 i 加 1,再把新值赋给 a;而表达式 `a = i++` 通常会先把 i 的原值赋给 a,再让 i 加 1。关于二者的理解,较准确的是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出程序设计基础场景,判断应该选择哪个概念、工具、协议或管理过程。
  • 考查程序设计基础的作用,要求从四个相近选项中找出最符合题干目标的一项。
  • 把程序设计基础和二者都只会让 i 变成字符串、前置自增会删除变量,后置自增会创建数据库、二者在任何表达式中都完全没有差别放在一起考,重点看适用场景是否一致。
  • 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
程序设计基础在程序员软考中的考法

软考选择题通常不会只考概念定义,还会把程序设计基础放到程序设计基础场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

这题建议直接代数值。i=5 时,`a=++i`:i 先变成 6,a 得到 6;`a=i++`:a 先得到 5,i 再变成 6。老师讲这类题通常会提醒,别只看最后 i 都加了 1,题目问 a 的值时就不一样了。

考点定位

自增题要看它是不是参与了表达式。单独自增看最终值;参与赋值时,前置先加后用,后置先用后加。

易错提醒

  • 只算 i 的最终值,忘记题目可能问的是 a 的值。
  • 在复杂表达式里连续修改同一个变量,导致阅读和判断困难。
  • 把不同语言的求值规则混用,忽略题目通常按类 C 语言基础规则考。

备考提示

  • 遇到自增题,先把初值写出来,再按语句顺序一步一步改。
  • 前置记“先涨价再卖”,后置记“先按旧价卖再涨价”。
  • 实际写程序时,复杂表达式里尽量少混用自增,代码可读性更重要。

你可能还想了解

  • ++i 和 i++ 在表达式中有什么区别?
  • 程序设计基础是什么?
  • 程序设计基础在程序员考试中怎么考?
  • 程序员程序设计基础题怎么理解?
  • ++i和i++区别怎么考?
  • 前置自增后置自增怎么考?

本文小结

本题核心考点是程序设计基础在程序设计基础场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(前置自增先加再用,后置自增先用再加)。