2016-11-12 194 views
-1

我不明白「if(n/10)」是什麼意思。它看起來不像劃分。C中「if(n/10)」是什麼意思?

#include <stdio.h> 
    /* printd: print n in decimal */
    void printd(int n) 
    if (n < O) { 
    putchar ('-'); 
    if (n/10) 
    printd(n/10); 
    putchar(n % 10 + '0'); 
+0

我不能發佈我想問的問題。所以我只是複製並粘貼一個隨機問題。\ – jessie

+1

不要發佈隨機代碼;它會導致更多的問題。爲什麼'n/10'看起來不像是師?它是什麼樣子的?分部是什麼樣的? –

回答

1

使用C中的條件表達式,將零視爲假,其他一切爲真。

所以聲明:

if (n/10) 

是相同的:

if (n/10 != 0) 

換句話說,在if聲明的身體會只要n不和9(含)之間執行。 C99以後的所有C標準都是這種情況(當一個或多個分區輸入爲負數時,C90具有實現定義的結果)。

就您提供的代碼而言,它充斥着語法錯誤,所以您需要先清理它,然後才能從中獲得任何有用的信息。

+0

自1999年以來,關於'n'值的說法在標準C上是正確的。在此之前的標準C中並不是真的 - 在1989 C標準中,沒有規定整數除法的舍入是否趨於零。 – Peter

+0

@Peter,當我談到C時,它通常是* current *標準,而不是二十多年前的標準。這也是我傾向於不用TurboC關注自己的原因:-)但是,爲了完整起見,我會稍微調整答案。 – paxdiablo

+0

我的評論是爲了完整。 – Peter