我试图理解格式说明符%d
,下面是示例
当我尝试使用两个4位数字作为
#include <stdio.h>
int main()
{
int x, y;
printf("Enter two 4 digit numbers!\n");
scanf("%2d %2d", &x, &y);
printf("Display %d %d", x, y);
return 0;
}
输出:
Enter two 4 digit numbers:
6789 4321
Display: 67 89
在这里,我无法指出为什么从x
开始打印。
答案 0 :(得分:3)
您的代码,包含
scanf("%2d %2d", &x, &y);
尝试从您的输入中读取两个两位数的整数
6789 4321
67
是2位整数,存储在x
中,89
是2位整数,存储在y
中。输入的其余部分保留在stdin
的缓冲区中。
您的假设
我无法指出为什么这是从x打印的
是错误的,因为
printf("Display %d %d ", x, y);
不仅打印“来自x”,还打印x
和y
。
要读取两个4位整数,请使用
scanf("%4d%4d", &x, &y);
答案 1 :(得分:0)
您不应使用“,”或scanf
内的空格。您可以简单地写为
scanf("%d%d", &x, &y);
答案 2 :(得分:0)
您的代码scanf("%2d %2d", &x, &y);
可以读取2个整数。但是这里要注意的是,每个整数最多可以是2位数字。如果提供了更长的输入,它将前两位数字作为第一个整数的一部分,并将后两位字符作为下一个整数的一部分。输入的其余部分仅存储在缓冲区中,而不会影响输入变量。
这是一个示范:
输入两个4位数字:
6789 4321
显示:67 89 //将
67
作为第一个整数,接下来的2个字符(89
)作为 下一个
..
输入两个4位数字:
678 9876
显示:67 8 //观察 change->
67
是第一个整数,8[space]
是下一个整数 一个(尽管[space]
在存储为int
时会被忽略,但是它是 在提取为输入时考虑)