C语言 Scanf not compiling



我是C的新手,在使用gcc在Ubunto上编译下面的代码时遇到了一个奇怪的问题。

#include <stdio.h>
int main()
{
char c;
printf("Inserire la codifica numerica :");
scanf(" %d",&c);
printf("La traduzione é %cn",c);
return 0;
}
当我编译代码时,我得到以下错误:
$ gcc codbin.c -o codbin.out
codbin.c: In function ‘main’:
codbin.c:7:14: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘char *’ [-Wformat=]
7 |     scanf(" %d",&c);
|             ~^  ~~
|              |  |
|              |  char *
|              int *
|             %hhd

但是根据教授在大学课程上告诉我们的内容,它应该是有效的。任何想法?

提前感谢,任何帮助将是非常感激的!

我认为错误信息是异常

清晰。%d期望int

但是您提供的变量c被声明为char:

char c;

我非常怀疑你的教授说这是可以的,但如果他们这样做,他们只是完全错误的。

具有%标识符的格式字符串必须匹配所提供的参数。

首先,这只是一个警告,这意味着你的代码应该仍然可以编译,所以请检查文件是否编码。存在。

如果没有,您可能有其他问题没有显示给我们。

第二,正如已经指出的,发出警告的原因是您的格式说明符"%d"与变量类型char不匹配。

"% d"希望您提供指向int变量的指针。

你没有被告知的是,你的程序仍然可以工作,但这将是一个侥幸。

因为charint小,scanf可能会尝试写它不应该使用的内存。这被称为"未定义行为"。这意味着它可以根据你使用的编译器、你运行的操作系统以及你运行程序时计算机所处的状态而改变。

你的程序可能会崩溃,打印一些奇怪的东西,或者即使代码是错误的,也可以正常工作。

相关内容

  • 没有找到相关文章

最新更新