使用int变量作为char变量好吗?

时间:2015-09-22 12:46:52

标签: c char int

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

int main()

{

 int i;

 scanf("%c",&i);

printf ("%c",i);

}

提前谢谢

2 个答案:

答案 0 :(得分:4)

C' s char是整数类型。它的(数字)值通常用于表示字符,但这是一个单独的问题。

您可以安全地使用int类型的变量来保存类型char范围内的值。您可以将char分配给int或将char传递给期望int的函数,两者都没有强制转换,也不会更改值。

在某些地方,有意使用int而不是char来表示字符。规范案例可能是标准库的getc()fgetc()getchar()函数,它们需要int的范围才能表示{{} 1}}除了每个可能的EOF值。此外,由于历史原因,一些其他函数声明char参数以接受期望为int类型的数据; char是众所周知的其中之一。

另一方面,{em>指针到memset()int 可互换。正如其他人所指出的,由于这个原因,您的char调用会产生未定义的行为。

一般来说,您应该使用scanf()而不是char来表示字符数据,除非有一个好的,外部驱动的理由(例如需要处理{的返回值) {1}})。更一般地说,正确匹配数据类型,故意考虑允许执行类型转换的位置。

答案 1 :(得分:2)

这 -

scanf("%c",&i);

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