0

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

  1. 对或错?

    该声明:

    scanf("%d:%f:%1f\n", &a, &b, &c);
    

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

    给出的答案是真实的。为什么会这样?我在这里看不到 4 个参数/参数。

  2. 对或错?

    该声明:

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

    展示+12

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

4

4 回答 4

6

第一的;

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

于 2012-08-26T13:26:37.897 回答
5

问题 #1

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

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

问题2

该行打印+123,试试看。

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

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

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

  • 标志 ( +):强制在结果前面加上一个加号或减号(+ 或 -),即使是正数也是如此。默认情况下,只有负数前面带有 - 号。
  • 宽度 ( 2):要打印的最小字符数。如果要打印的值比这个数字短,结果用空格填充。即使结果较大,该值也不会被截断。
  • 说明符 ( d):有符号十进制整数
于 2012-08-26T13:25:02.997 回答
2

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

于 2012-08-26T13:26:46.377 回答
1

第一个论点: "%d:%f:%1f\n"

第二个论点: &a

第三个论点: &b

第四个论点: &c

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

于 2012-08-26T13:25:45.167 回答