gpt4 book ai didi

c - 整数n的条件 "if (n/10)"说明了什么?

转载 作者:太空宇宙 更新时间:2023-11-04 02:15:17 25 4
gpt4 key购买 nike

我正在查看以下代码:

void printd(int n)
{
if (n < 0) {
putchar('-');
n = -n;
}
if (n / 10)
printd(n / 10);
putchar(n % 10 + '0');
}

我理解第一个 if 语句很好,但第二个让我在几个点上感到困惑。

就其本身而言,由于“n”是一个整数,我知道 n/10 会将小数点向左移动一次——有效地删除数字的最后一位;但是,我很难理解这本身就是一个条件,而结果却不等于某物。为什么条件不是 if ((n/10) >= 0) 或其他?

此外,为什么将“0”传递到 putchar() 调用中?

谁能告诉我如果你用英语大声朗读它会怎样?

谢谢!

最佳答案

n / 10如果结果为 0,则计算结果为 false,否则为 true。本质上它是在检查是否 n > 10 && n < -10 (由于 n = -n 代码,-10 在这里不起作用)

+ '0'用于字符偏移量,因为字符“0”-“9”不是由数字 0-9 表示,而是以偏移量表示(ASCII 为 48-57)。

Can someone tell me how it would read if you were to read it aloud in English?

如果你在谈论条件,那么我会说“如果整数 n 除以 10 不为零”

关于c - 整数n的条件 "if (n/10)"说明了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8612438/

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