我仍然是C语言的初学者,因此我很难理解“%d!=%ld”。 我知道%d和%ld分别用于整数和long,所以“!=”使我感到困惑。
#include<stdio.h>
long factorial(int);
int main() {
int n;
long f;
printf("Enter an non-negative integer: ");
scanf("%d", &n);
if (n < 0)
printf("Negative integers are not allowed.\n");
else {
f = factorial(n);
printf("%d! = %ld\n", n, f); //what does this mean?
}
return 0; }
long factorial(int n) {
if (n == 0)
return 1;
else
return(n * factorial(n-1)); }
答案 0 :(得分:3)
%d
,即int n
的十进制值! =
,即原义字符序列%ld
,即long f
的十进制值答案 1 :(得分:2)
%d
和%ld
是int
中long int
和printf
的格式化占位符。如注释中所述,感叹号只是阶乘符号。
答案 2 :(得分:1)
printf()允许您打印一个带有变量的字符串。假设您有一个变量i
,其中包含整数7。
printf("My variable is %d", i);
将打印
My variable is 7
到控制台!这是因为%d是您告诉printf()的方式,“嘿,在这里放一个整数变量!”。然后将整数作为函数的下一个参数提供。在您的情况下,%d表示整数n
,而%ld表示 long 整数f
。由于f可能确实很大,因此我们将其设置得较长,这意味着您的计算机内部会为其分配更多的字节。因此,例如,如果我们想获取阶乘5并打印出来,则可以执行以下操作:
printf("Factorial of %d equals %ld\n", 5, factorial(5))
// this will print "Factorial of 5 is 120" then a newline
哦,\n
只是意味着打印换行符后缀!
答案 3 :(得分:0)
SELECT tablea.name
FROM tablea
INNER JOIN (
SELECT a_id, COUNT(*) AS c
FROM tableb
GROUP BY a_id
) AS groupedb ON tablea.id = tableb.a_id
WHERE tablea.pieces <> groupedb.c
printf("%d! = %ld\n", n, f); //what does this mean?
-将整数打印为带符号的十进制数字。
%d
-适当地指定参数为l
或long int
。 unsigned long int
然后打印%ld
或long int
打印的文字将变成
unsigned long int
(阶乘符号n! = f
)