我正在研究一本 C 编程书籍中的一些问题,遇到了一个有趣的问题:
对或错?
该声明:
scanf("%d:%f:%1f\n", &a, &b, &c);
包含四个参数
"%d:%f:%1f\n"
、&a
和。&b
&c
给出的答案是真实的。为什么会这样?我在这里看不到 4 个参数/参数。
对或错?
该声明:
printf("%+2d",123);
展示
+12
答案是错误的。为什么会这样?
我正在研究一本 C 编程书籍中的一些问题,遇到了一个有趣的问题:
对或错?
该声明:
scanf("%d:%f:%1f\n", &a, &b, &c);
包含四个参数"%d:%f:%1f\n"
、&a
和。&b
&c
给出的答案是真实的。为什么会这样?我在这里看不到 4 个参数/参数。
对或错?
该声明:
printf("%+2d",123);
展示+12
答案是错误的。为什么会这样?
第一的;
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
。
问题 #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
):有符号十进制整数在第一种情况下,参数是指传递给函数的参数,而不是格式语句参数。在第二个问题中,加号表示输出一个加号,而 2 表示使用至少两个位置作为输出。打印不会截断数字,因此它将打印出所有三位数字。
第一个论点: "%d:%f:%1f\n"
第二个论点: &a
第三个论点: &b
第四个论点: &c
函数调用中有四个参数传递给函数。