2025-11-20 06:35:04
a--这个表达式其实是先让a减1再取值,所以当输入a等于1的时候,虽然a本身会变成0,但输出的还是原来的1。就像你手里攥着一块巧克力,先咬了一口(a减1)再掏出来给朋友看(输出结果),朋友看到的时候还是咬之前剩下的那块。
为啥这个结果看起来有点反常识呢?因为后置操作符就像个延迟生效的小偷,它先偷偷修改变量再让你看到结果。比如用C语言写个测试程序:int a=1;printf("%d",a--);实际运行会先让a变成0,但打印出来的还是1。这跟前置操作符a--完全不同,前置的直接输出再修改。根据C语言标准(C11标准文档3.6.1.7节),这种后置递减操作符的值就是原变量的值,修改是在之后发生的。就像你先打开手机电量显示(原值1),等屏幕再刷新的时候才会更新成0。不过要注意,不是所有语言都支持这个操作符,比如Python就报错说"invalid expression",Java也必须用a--这种写法。
本题链接: