[英]variations in scanf in C language
scanf("%d %d"+2, &a, &b);
printf("%d\n%d", a, b);
它只接受a
并打印a
和0
。
谁能解释为什么会这样? 另外,如果我写+1
而不是+2
,它不接受任何内容并打印0
和0
。
这个:
scanf("%d %d"+2,&a,&b);
是相同的
scanf(" %d", &a, &b);
这与
scanf("%d", &a, &b);
这意味着额外的&b
参数是不必要的。
这里发生的是"%d %d"
是一个char*
。 将两个添加到它会产生一个指向前面两个字节的指针,这意味着它现在指向" %d"
。 前导空格是不必要的,因为%d
已经跳过前导空格字符。
当您使用+1
而不是+2
, scanf
与
scanf("d %d", &a, &b);
这意味着它期望输入中的d
后跟一个整数分配给a
。 由于您在输入中提供了一个数字而不是d
,因此scanf
失败并返回 0。因此,没有任何东西被接受并且执行到达printf
,它打印了a
和b
的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.