使用 int 变量作为 char 变量可以吗?

is using int variables as char variables OK?

所以我的问题是为什么有些人将 int 变量用作 char 变量。 例子

int main()

{

 int i;

 scanf("%c",&i);

printf ("%c",i);

}

提前致谢

这个-

scanf("%c",&i);

传递了错误的参数(%c 需要 char 的地址)。它调用了未定义的行为

C的char是整型。它的(数字)值最常用于表示字符,但这是另一回事。

您可以安全地使用类型 int 的变量来保存类型 char 范围内的值。您可以将 char 分配给 int 或将 char 传递给需要 int 的函数,既不进行强制转换也不更改值。

在某些地方,有意使用int来代替char来表示字符。典型情况可能是标准库的 getc()fgetc()getchar() 函数,它们需要 int 的范围才能表示 EOF除了每个可能的 char 值。此外,由于历史原因,其他一些函数声明 int 参数以接受预期类型为 char 的数据; memset() 是其中最著名的一个。

另一方面,指向intchar指针不能互换。正如其他人指出的那样,您的 scanf() 调用因此产生了未定义的行为。

一般来说,您应该使用 char 而不是 int 来表示字符数据,除非有一个很好的、外部驱动的理由不这样做(例如需要处理 return getchar() 的值)。更一般地说,正确匹配数据类型,仔细考虑允许执行类型转换的位置。