什么是;如果(n/10)“;你的意思是C?

什么是;如果(n/10)“;你的意思是C?,c,C,我不明白“如果(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'); #包括 /*打印D:以十进制打印n*/ 无效打印D(

我不明白“如果(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');
#包括
/*打印D:以十进制打印n*/
无效打印D(整数n)
如果(n
对于C中的条件表达式,零被视为false,其他所有内容都被视为true

因此,声明:

if (n / 10)
与以下内容相同:

if (n / 10 != 0)
换句话说,只要
n
不在
-9
9
之间,则执行
if
语句的主体。这是从C99开始的所有C标准的情况(当除法的一个或多个输入为负时,C90具有实现定义的结果)


就您提供的代码而言,它充斥着语法错误,因此您需要在从中获得有用的信息之前先将其清理干净。

我无法发布我想问的问题。因此,我只是复制并粘贴一个随机问题。\n不要发布随机代码;这会导致更多问题。
n/10
为什么不像除法?是什么看起来像?除法看起来像什么?你所说的关于
n
的值自1999年以来在标准C上是正确的。这在之前的标准C中是不正确的-在1989年的C标准中,没有规定整数除法的舍入是否朝向零。@Peter,当我谈到C时,它通常是当前的标准,而不是t中的标准二十多年前。这也是我不关心TurboC的原因:-)但是,为了完整性,我会稍微调整一下答案。我的评论是为了完整性。谢谢。我仍然不知道它在什么条件下运行。只有0/10=0对吗?所以只要n!=0,它就会运行。但是在b中ook编写代码是为了将数字转换为字符串。那么如何测试它是否是字符串呢?@jessie,在C整数除法中,0/10到9/10将为零。在现代C(C99+)中-9/10到-1/10也将为零。