单片机c语言视频教程

dat / 100, dat / 10 % 100, dat % 10, 这三个计算是分别将dat的百位,十位及各位计算出来。

比如:dat=251,则有:

dat / 100 = 2

dat / 10 % 10 = 5

dat % 10 = 1

为什么要 + '0'呢。是因为字符串保存的字符是字符对应的ASCII码。字符'0'的ASCII是48, 字符'1'的ASCII码是49, '2'的是50, .... 字符'9'的ASCII编码是57。 而编译器对于 '0' 会自动视为是'0'的ASCII编码,即48。也就是说: str[0] = ... + '0' 就相当于 str[0] = ... + 48;

好了,再来看刚刚的例子:

str[0] = (dat / 100) + '0' = (251 / 100) + '0' = 2 + '0' = 2 + 48 = 50 (而50这正好是字符'2'的ASCII码)

同样:

str[1] = 53, str[2] = 49. (53即字符'5'的ASCII码, 49即为字符'1'的ASCII码),

所以最后结果是:str[0] = '2', str[1] = '5', str[2] = '1', str[3]='\0';

这样 str 就正好形成了一个字符串:“251”,这正好就是dat的实际数值!