【发布时间】:2021-11-18 08:34:43
【问题描述】:
我是 C 新手,在使用 gcc 在 Ubunto 上编译以下代码时遇到了一个奇怪的问题。
#include <stdio.h>
int main()
{
char c;
printf("Inserire la codifica numerica :");
scanf(" %d",&c);
printf("La traduzione é %c\n",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
但它应该基于我们的教授在大学课程中告诉我们的内容。有什么想法吗?
在此先感谢,任何帮助将不胜感激!
【问题讨论】:
-
c已被声明为字符,字符的适当格式说明符为%c-%d用于整数。另外,这只是一个警告,代码已经编译成功。 -
如果你想读取一个字符,请使用
%c。如果你想读取一个小整数,请使用%hhd(但请注意,char是有符号还是无符号取决于编译器,所以我建议uint8_t用于无符号字节,int8_t用于有符号字节)。跨度>