Printf返回时从scanf输入了错误的数字

Printf返回时从scanf输入了错误的数字,c,printf,scanf,C,Printf,Scanf,我写了一些基本代码来学习printf和scanf函数,但是当通过scanf函数输入整数时,printf函数返回的数字完全不同。输入字符时也会发生类似的情况,只有printf函数显示一个正方形。代码有问题吗,还是其他问题 #include <stdio.h> int main() { char letter; int num1,num2; printf("Enter any one keyboard character: "); scanf("%c",

我写了一些基本代码来学习printf和scanf函数,但是当通过scanf函数输入整数时,printf函数返回的数字完全不同。输入字符时也会发生类似的情况,只有printf函数显示一个正方形。代码有问题吗,还是其他问题

#include <stdio.h>
int main()
{
    char letter;
    int num1,num2;
    printf("Enter any one keyboard character:  ");
    scanf("%c", &letter);
    printf("Enter any two integers separated by a space:  ");
    scanf("%d %d", &num1, &num2);

    printf("Numbers output %d and %d \n" , &num1, &num2) ;
    printf("letter input %c\n" , &letter) ;
    printf("stored at %p" , &letter) ;
    return 0;
}
#包括
int main()
{
字符字母;
int num1,num2;
printf(“输入任意一个键盘字符:”);
scanf(“%c”和字母);
printf(“输入由空格分隔的任意两个整数:”);
scanf(“%d%d”、&num1、&num2);
printf(“数字输出%d和%d\n”、&num1和&num2);
printf(“字母输入%c\n”,&letter);
printf(“存储在%p”处,&字母);
返回0;
}
无论何时输入任何整数或字符,都会显示2686680和2686676来代替整数,并显示一个填充矩形而不是字符


任何帮助都将不胜感激,谢谢

&letter
表示存储了打印F正确的变量
letter
的地址。在printf参数中应该只使用
字母
,如下所示:

 printf("%d\n", letter); // prints the value stored in letter

 printf("%p\n", &letter); // prints the address where letter is stored in memory
可能重复的