下面给出的代码是否错误? #包括 int main() { INTA; printf(scanf(“%d”、&a)); 返回0; }

下面给出的代码是否错误? #包括 int main() { INTA; printf(scanf(“%d”、&a)); 返回0; },c,gcc,C,Gcc,我收到消息“分段错误(堆芯转储)”您想打印“a”,所以您应该这样做 #include <stdio.h> int main() { int a; printf(scanf("%d",&a)); return 0; } scanf()返回写入的字符总数函数的printf()格式为:- scanf("%d",&a); printf("%d", a); 必须为函数printf()提供一个字符串(带格式说明符的格式字符串) 你可以尝试:- pri

我收到消息“分段错误(堆芯转储)”

您想打印“a”,所以您应该这样做

#include <stdio.h>

int main()
{
    int a;
    printf(scanf("%d",&a));
    return 0;
}
scanf()
返回写入的字符总数

函数的
printf()
格式为:-

scanf("%d",&a);
printf("%d", a);
必须为函数
printf()
提供一个字符串(带格式说明符的格式字符串)

你可以尝试:-

printf(const char *format, ...)
如果扫描成功,将打印1。这里是
%d
格式字符串,用于
整数
参数

要读取和打印变量
a
,请尝试:-

printf("%d",scanf("%d",&a)); // with format string

阅读编译器警告

 scanf("%d",&a);  // reading
 printf("%d",a);  // printing

printf
需要一个字符串作为第一个参数。您正在给它一个整数。

scanf
查看您的格式字符串,查看
%d
,并将其与
int
的地址相匹配,该地址由
&a
提供<如果尝试读取值时出现错误,code>scanf将返回
EOF
,否则它将返回成功匹配的项数作为
int
。例如,如果键入
123
scanf(“%d”,&a)==1
,但如果键入
q123
scanf(“%d”,&a)==0
,则为真

printf
需要一个类似于
scanf
的格式字符串,它使用该格式打印参数的值。它无法知道用于
scanf
的格式是否与您希望用于打印的格式相同,并且您没有提供一个字符串,它是一种指针,包含用于打印参数的格式。这就是代码的问题所在

整数(例如
scanf
返回的
int
值)可以转换为指针,而无需告诉编译器执行转换。因此,编译器可能会抱怨您正在做一些可能有问题的事情(警告:传递'printf'的参数1会使指针从整数变为不带强制转换的整数),但该代码将被允许编译和执行


当您看到这样的警告时,请查看该函数需要该参数的类型以及用作该参数的值的类型。很可能编译器正试图帮助您避免类似
printf(scanf(“%d”,&a))这样的错误

您将int返回从scanf传递到printf(),printf()需要一个字符串指针作为第一个参数:BANG。不要编写“聪明”的代码-它只会导致问题。您没有为
printf
提供格式说明符。例如:
printf(“%d”、scanf(“%d”和&a))当然,它不会打印您认为会打印的内容。
prog.c:8:12: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast [-Wint-conversion]
     printf(scanf("%d",&a));
            ^~~~~