2
我只想在C中編寫一個簡約程序來計算某個自然數的位數之和(位數的總和定義如下:sumOfDigits(123)= 6,sumOfDigits(0)= 0,sumOfDigits(32013)= 9等等)。計算C中奇怪的行爲時,用前導零計算數字的總和
到目前爲止,下面的代碼片段都可以。例如,對於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
@ user2717860,Zaibis,http://programmers.stackexchange.com/questions/98692/where-are-八進制 - 有用 –
因爲我刪除了我的評論:@Alter Mann:這是一個有用的鏈接,關於這個符號是有用的,謝謝。 – dhein