case 0x0e://min++;
min=(min++)%60;
shi = min/10;
ge = min %10;
分析:
将min初值设为1时按键时显示的始终是1.
将min初值设为2时按键时显示的始终是2.
………………………………………………
而这句的执行,应该是(min++)部分先执行,但由于是min++
所以是先使用了该变量min的值后才将其加1.
最初想的应该是min%60后将余数赋给min,之后才将min+1,
但实际的结果却是其值,
1. 在min<60时,一直保持初值,不发生改变;
2. 在min>=60时,其显示的值是对60取余之后的余数值;
则综合这两点可知:min得到的一直是对60取余之后的余数值;
所以可以得出一个结论:
min在做完右边的运算后,但在赋值操作之前将自身加1,之后才进行赋值运算。这样造成的结果便是,min虽然加1啦,但由于之后又做了一次给min的赋值运算而该值就是min对60取余之后的余数值.
这样可想而知:当min=0时,对60取余之后的余数值=0;之后min+1,此时min变成了1,但之后又将min对60取余之后的余数值=0,赋给了min,所以最终min的值还是0;
所以正确的代码应该是:
min++;
min=min%60;
或
min++;
min%=60;