此代码中的“%d!=%ld'n”是什么意思?

时间:2018-11-22 17:59:55

标签: c

我仍然是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)); }

4 个答案:

答案 0 :(得分:3)

This will print:

  • %d,即int n的十进制值
  • ! =,即原义字符序列
  • %ld,即long f的十进制值

答案 1 :(得分:2)

%d%ldintlong intprintf的格式化占位符。如注释中所述,感叹号只是阶乘符号。

答案 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-适当地指定参数为llong intunsigned long int然后打印%ldlong int

打印的文字将变成

unsigned long int

(阶乘符号n! = f