了解格式说明符整数(%d)

时间:2018-10-04 09:57:10

标签: c

我试图理解格式说明符%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开始打印。

3 个答案:

答案 0 :(得分:3)

您的代码,包含

scanf("%2d %2d", &x, &y);

尝试从您的输入中读取两个两位数的整数

6789 4321

67是2位整数,存储在x中,89是2位整数,存储在y中。输入的其余部分保留在stdin的缓冲区中。

您的假设

  

我无法指出为什么这是从x打印的

是错误的,因为

printf("Display %d %d ", x, y);

不仅打印“来自x”,还打印xy

要读取两个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时会被忽略,但是它是   在提取为输入时考虑)