首页 > 解决方案 > 为什么在下面的c语句中,num值可以改变

问题描述

result[0] = (num % base) + '0';

当 num 在此语句之前为偶数时,num 在上述语句之后变为 48。当 num 在此语句之前为奇数时,num 在上述语句之后变为 49。

标签: cstringtypestype-conversioninteger

解决方案


result[0] = (num % base) + '0';

的 ASCII 码'0'是 48。如果你的号码 id 是偶数,base == 2结果num % base是 0。48 + 0 == 48. 如果你的数字是奇数,base == 2结果num % base148 + 1 == 49. ASCII 中的 49 是'1'

https://godbolt.org/z/5VuFro


推荐阅读