JoyceJi 发表于 2021-7-28 14:15:14

作业S1E13

动动手打印数字的题目中:
temp = 10 * num + (ch - '0');
这行代码怎么理解?

SHRS23 发表于 2021-7-28 14:27:45

do-while 循环的作用是每次处理一个字符
假设你的输入是123
程序处理时候会认为你输入的是三个字符 ‘1’‘2’‘3’
你有疑问的这个语句就是把这三个字符拼成整型数据 123
处理字符1时 temp = 10 * 0 + (49 - 48) = 1, 随后num被赋值为temp   // 字符1的ascii码是49,字符0的ASCII码是48,处理数字字符的时候常用(ch - '0')来获取字符所对应的数字
处理字符2时 temp = 10 * 1 + (50 - '0') = 12
处理字符3时 temp = 10 * 12 + (51 - '0') = 123

JoyceJi 发表于 2021-7-28 14:33:54

SHRS23 发表于 2021-7-28 14:27
do-while 循环的作用是每次处理一个字符
假设你的输入是123
程序处理时候会认为你输入的是三个字符 ‘1’ ...

这里输出的其实是个int型数字,对吧,很妙!
我编的时候,在每次循环判断getchar()后进行了putchar(),
也是实现了所说的功能。

SHRS23 发表于 2021-7-28 15:01:17

JoyceJi 发表于 2021-7-28 14:33
这里输出的其实是个int型数字,对吧,很妙!
我编的时候,在每次循环判断getchar()后进行了putchar(), ...

题目的本意应该就是输出int类型
页: [1]
查看完整版本: 作业S1E13