设 int x = 1, y = 2,则表达式:(++x) + (y++) 输出的结果为( )
这题考的是C++里自增运算符的优先级和‘先加后用’与‘先用后加’的区别。拿到题先别急着算,把x、y的初始值写在草稿纸上,再按表达式从左到右的顺序,一步步模拟(++x)和(y++)各自发生了什么,最后把两个结果相加。
学生最容易掉进两个坑:一是分不清++x和x++,把++x当成x++(先用后加),导致算出4;二是忽略了++x会先让x变2,而y++虽然先取2再加1,但加法是(++x)+(y++),不是x+(y++),所以要把两个变化后的值直接相加。还有人会误以为y++只影响y,不贡献到加法里,或者把整行当成一个整体先算后加,这些都会让答案偏大或偏小。
这题考查的是C++基础语法里的自增运算符(++)及其两种形式:前缀++x(先加后用)和后缀x++(先用后加),以及运算符的优先级和结合性。命题人喜欢在这种看似简单的表达式里挖坑,就是看考生是否真正理解‘先’和‘后’在什么时候生效,而不是死记硬背。拿到题,别急着套公式,先模拟执行过程:
初始状态:int x = 1, y = 2。 表达式是(++x) + (y++)。根据C++优先级,++x和++y都是单目运算符,优先级高于加法,所以先分别计算两个括号里的值。
计算(++x):这是前缀自增,先把x加1,再使用新值。原来x=1,加1后x变成2,表达式(++x)的值就是2。 计算(y++):这是后缀自增,先使用y的当前值,再把y加1。原来y=2,所以(y++)的值是2,但y在表达式结束后会变成3。
现在把两个结果相加:2 + 2 = 4。
这就是正确答案C。很多同学会错选B或D,往往是因为把++x当成了x++,以为x还是1,然后算1+2=3;或者把y++当成只取1,算2+1=3;还有人误以为整行是x先加后y再加,算成1+2+1=4却忘了y++本身贡献的是2而不是1。这些都是典型的‘概念混淆’错误。
避坑指南:遇到这类题,一定要在草稿纸上画出变量跟踪表,按顺序记录每一步x、y的值以及表达式的中间结果,千万别靠脑子‘想当然’。还要注意++x和x++的区别:前缀改变值后再用,后缀先使用再改变值。这个知识点在CSP-J/S、NOIP等竞赛里反复出现,是基础中的基础,但也是最容易丢分的地方。
从历年考频看,自增/自减运算符的考察频率稳定在每年1-2次,常以单选或程序填空形式出现,命题人喜欢在简单表达式里埋陷阱,测试考生对语法的精确理解。未来可能继续以类似形式考查,比如混合多种运算符、嵌套括号或结合赋值操作,难度不会太大,但细节决定成败。总之,这道题的核心就是:看清运算符类型,按顺序模拟,别被‘先’‘后’字面意思迷惑,答案就是4。