我沒有與誰寫一個unsigned int打印功能:遞歸打印數量c。與寫
ssize_t putc_fdr(char c, int fd)
{
return (write(fd, &c, sizeof(char)));
}
ssize_t putuint_fdr(uintmax_t i, int fd)
{
return (i != 0 ? putuint_fdr(i/10, fd) + putc_fdr(i % 10 + '0', fd) : 0);
}
但它沒有爲I = 0工作,因爲功能不顯示任何信息。 如果我用': putc_fdr('0', fd)'
代替': 0'
,它將不起作用,因爲如果i> 10,遞歸結束時總會打印一個額外的'0'。 (邏輯) 但是如何僅在開始i爲0時打印此0?
操作數對「+」的求值是未指定的順序。您的號碼可能會被正確打印,因爲它會被反向打印。 – StoryTeller
如果= 0,它將返回0,因爲這就是你編碼它要做的。爲了更清楚,表達式(i!= 0?X:Y)將始終返回Y. – NomeQueEuLembro
[爲什麼這些構造(使用++)未定義的行爲?](http://stackoverflow.com/questions/949433/why-are-these-constructs-using-undefined-behavior) – Olaf