4个论点?3?

use*_*852 1 c parameters arguments

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

  1. 对或错?

    该声明:

    scanf("%d:%f:%1f\n", &a, &b, &c);
    
    Run Code Online (Sandbox Code Playgroud)

    包含四个参数"%d:%f:%1f\n",&a,&b&c.

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

  2. 对或错?

    该声明:

    printf("%+2d",123);
    
    Run Code Online (Sandbox Code Playgroud)

    显示 +12

    答案是错误的.为什么会这样?

Joa*_*son 6

第一;

scanf("%d:%f:%1f\n", &a, &b, &c);
Run Code Online (Sandbox Code Playgroud)

包含4个参数;

1: "%d:%f:%1f\n"
2: &a
3: &b
4: &c
Run Code Online (Sandbox Code Playgroud)

第二;

printf("%+2d",123);
Run Code Online (Sandbox Code Playgroud)

2表示最小字段宽度,但123宽于2个字符并将完整打印.该+部队的标志,所以结果+123.


Vin*_*Pii 5

问题#1

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

scanf("%d:%f:%1f\n", &a, &b, &c);
   // 1              2   3   4
Run Code Online (Sandbox Code Playgroud)

问题2

该行打印+123,试一试.

printf("%+2d",123);
Run Code Online (Sandbox Code Playgroud)

来自http://www.cplusplus.com/reference/clibrary/cstdio/printf/:

概要: %[flags][width][.precision][length]specifier

  • 标志(+):强制在结果前面加上加号或减号(+或 - ),即使是正数.默认情况下,只有负数前面带有 - 符号.
  • 宽度(2):要打印的最小字符数.如果要打印的值小于此数字,则结果将填充空格.即使结果较大,也不会截断该值.
  • Specifier(d):有符号十进制整数