C 4个论点?3.

C 4个论点?3.,c,parameters,arguments,C,Parameters,Arguments,我正在研究一本C编程书中的一些问题,遇到了一个有趣的问题: 对还是错 声明: scanf("%d:%f:%1f\n", &a, &b, &c); printf("%+2d",123); 包含四个参数%d:%f:%1f\n“,&a,&b和&c 给出的答案是正确的。为什么会这样?我在这里没有看到4个参数/参数 对还是错 声明: scanf("%d:%f:%1f\n", &a, &b, &c); printf("%+2d",123); 显示+12

我正在研究一本C编程书中的一些问题,遇到了一个有趣的问题:

  • 对还是错

    声明:

    scanf("%d:%f:%1f\n", &a, &b, &c);
    
    printf("%+2d",123);
    
    包含四个参数
    %d:%f:%1f\n“
    &a
    &b
    &c

    给出的答案是正确的。为什么会这样?我在这里没有看到4个参数/参数

  • 对还是错

    声明:

    scanf("%d:%f:%1f\n", &a, &b, &c);
    
    printf("%+2d",123);
    
    显示
    +12

    答案是否定的。为什么会这样

  • 问题1

    参数是用逗号分隔的参数:)

    问题2

    这行打印+123,试试看

    printf("%+2d",123);
    
    发件人:

    简介:
    %[flags][width][.precision][length]说明符

    • Flag(
      +
      ):强制在结果前面加上加号或减号(+或-),即使是正数也是如此。默认情况下,只有负数前面带有-号
    • 宽度(
      2
      ):要打印的最小字符数。如果要打印的值小于此数字,则结果将用空格填充。即使结果更大,该值也不会被截断
    • 说明符(
      d
      ):有符号十进制整数
    第一个参数:
    %d:%f:%1f\n“

    第二个参数:
    &a

    第三个参数:
    &b

    第四个参数:
    &c

    函数调用中传递给函数的参数有四个。

    首先

    scanf("%d:%f:%1f\n", &a, &b, &c);
    
    包含4个参数

    1: "%d:%f:%1f\n"
    2: &a
    3: &b
    4: &c
    
    第二

    printf("%+2d",123);
    

    2表示最小字段宽度,但123大于2个字符,将以完整格式打印。
    +
    强制执行符号,因此结果是
    +123

    在第一种情况下,参数表示传递给函数的参数,而不是格式语句参数。在第二个问题中,加号表示输出为加号,2表示至少使用两个位置作为输出。Prints不会截断一个数字,因此它会打印出所有三位数字。

    关于#1:您看到多少个参数(我数了四个)?关于#2:你期待什么-你尝试过吗?你好,欢迎来到SO。请考虑编辑您的问题,以便使用格式化特征。代码通常用反勾号标记,导致类似于此的。另外,我认为你第一个问题中缺少的第四个
    是偶然的,因为你抄袭了。那么请一次只问一个问题。在本例中,你可能已经从第一个问题的答案中学到了什么,以完全避免第二个问题,因为你知道在哪里可以找到它。