我有一个关于getint程序的问题。
当我们得到这个部分的时候:
for(*pn = 0; isdigit(c); c = getch())
*pn = 10 * *pn + (c - '0');首先,它将c转换为它的实数值,然后将pn中的数据乘以10。为什么它要将10与pn中的数据相乘
致以敬意,
肯
发布于 2012-10-12 01:03:00
它从左边开始,当它移动到右边时,它遇到的每一个连续的数字都会乘以10。
以字符串"234“为例:
*pn)乘以10,加2,得到2。*pn)乘以10,加3,得到23。*pn)乘以10,加4,得到234。<代码>H29<代码>G210发布于 2012-10-12 01:05:45
在10中,小数记法中的任何数字都可以表示为多项式
234 = 2*10^2 + 3*10 + 4从左边读取并乘以10确保每个数字最终都是10的正确幂的倍数。这只是Horners法则的一个应用,真的。
发布于 2012-10-12 01:04:26
该函数从左开始,一次读取一个数字。因此,如果它读取的是12,那么它首先获取c == '1'和*pn == 0,然后将1添加到*pn,现在*pn是1。对于每个连续的数字,它将现有值乘以10 (*pn现在是10),然后将数字相加(*pn现在是12)。这样,它一次读取一个数字,并以正确的整数结束。
https://stackoverflow.com/questions/12844778
复制相似问题