1. Num[0]++ > '9'
执行过程
先使用 Num[0] 当前的值与字符 '9' 进行比较,比较完成后再将 Num[0] 的值加 1。若比较结果是 Num[0] 大于 '9',就把 Num[0] 重置为 '0'。
示例分析
假设 Num[0] 初始值为 '9',具体步骤如下:
-
比较操作:先将 '9'(其 ASCII 码值为 57)与 '9' 比较,'9' 不大于 '9',此比较条件不成立。
-
自增操作:接着 Num[0] 的值加 1。由于字符类型在自增时是基于其 ASCII 码值进行的,'9' 的 ASCII 码值加 1 后得到的是 ':'(其 ASCII 码值为 58),而不是 '10' ,因为 Num[0] 是一个字符类型变量,只能存储单个字符。所以此时 Num[0] 的值变为 ':' ,后续如果没有额外处理,它就会保持为 ':' 。
2. ++Num[0] > '9'
执行过程
先把 Num[0] 的值加 1,然后将加 1 后的值与字符 '9' 进行比较。若加 1 后的值大于 '9',则将 Num[0] 重置为 '0'。
示例分析
假设 Num[0] 初始值为 '9',具体步骤如下:
-
自增操作:执行 ++Num[0] ,'9' 的 ASCII 码值加 1 后变成 ':' ,此时 Num[0] 的值变为 ':' 。
-
比较操作:用 ':' 与 '9' 比较,因为 ':' 的 ASCII 码值(58)大于 '9' 的 ASCII 码值(57),所以比较条件成立。
-
重置操作:由于条件成立,将 Num[0] 重置为 '0' 。
总结:
正常数字递增场景
在数字递增且要进行边界判断(如从 '0' 到 '9' 循环)的场景中,使用 ++Num[0] 能正确实现需求。因为它会先更新 Num[0] 的值再进行比较,当达到 '9' 时能正确判断并重置为 '0'。而使用 Num[0]++ 可能会导致判断不准确,例如当 Num[0] 为 '9' 时,先比较 '9' 不大于 '9',然后 Num[0] 变为 ':'('9' 的 ASCII 码加 1),后续可能会产生不符合预期的结果。
特殊业务需求场景
如果业务需求是先使用当前值进行判断,判断完成后再对值进行递增,那么使用 Num[0]++ 是合适的。但在这个密码数字调整的场景下,一般是希望先递增数字再判断是否超出范围,所以不适合使用 Num[0]++。