我想删除没有更改数据类型的警告到char。
#include<stdio.h>
#include<stdlib.h>
main()
{
unsigned char ch;
printf("Hello This is Problematic\n");
scanf("%d",&ch);
printf("1\n");
}
这会生成警告
test.c:7:2:警告:格式'%d'需要类型'int *'的参数,但参数2的类型为'unsigned char *'[-Wformat =] scanf(&#34;%d& #34;,&安培; CH);
答案 0 :(得分:2)
实际上,
scanf("%d",&ch);
将程序保留为undefined behavior,因为提供的参数不是转换说明符的正确类型。你需要写
scanf("%hhu",&ch);
引用C11
,章节§7.21.6.2
hh
指定以下
d
,i
,o
,u
,x
,X
或n
转换说明符适用 带有signed char
或unsigned char
的类型指针的参数。