gpt4 book ai didi

c - 计算带前导零的数字总和时 C 中的奇怪行为

转载 作者:行者123 更新时间:2023-12-01 11:42:24 26 4
gpt4 key购买 nike

我只是想用C写一个极简程序来计算某个自然数的位数之和(位数之和定义如下:sumOfDigits(123) = 6, sumOfDigits(0) = 0, sumOfDigits(32013 ) = 9,依此类推)。

到目前为止,使用以下代码片段一切正常。例如,对于 5100,它正确地提供 6。但是,为什么 14 交付给 05100(记住前导 0)?

这是怎么回事?

我查看了数字的二进制表示,但没有给我任何信息。 (顺便说一句:我猜下面的代码应该可以在任何地方运行。)

#include <stdio.h>

unsigned int sumOfDigits(unsigned int n) {
int retval = 0;
while (n > 0) {
retval += n % 10;
n/=10;
}
return retval;
}

int main() {
printf("OK: %u\n", sumOfDigits(5100u));
printf("WTF: %u", sumOfDigits(05100u));
return 0;
}

编辑: 正如 Zaibis 所说....前导 0 表示八进制表示法。 :-) 等等:5100_8 == 2624_10

最佳答案

前导 0 表示您要使用八进制数字系统。

所以 017 即十进制:15

你的 05100 将是十进制:2624

关于c - 计算带前导零的数字总和时 C 中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18443054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com