[英]is using int variables as char variables OK?
所以我的问题是为什么有些人将int变量用作char变量。 例子
int main()
{
int i;
scanf("%c",&i);
printf ("%c",i);
}
提前致谢
C的char
是整数类型。 它的(数字)值最常用于表示字符,但这是另一回事。
您可以安全地使用int
类型的变量来保存char
类型范围内的值。 您可以将char
分配给int
或将char
传递给需要int
的函数,而无需强制转换和更改值。
在某些地方,有意使用int
代替char
来表示字符。 规范的情况可能是标准库的getc()
, fgetc()
和getchar()
函数,除了每个可能的char
值之外,它们还需要一个int
的范围才能表示EOF
。 同样,出于历史原因,其他一些函数声明int
参数以接受预期为char
类型的数据; memset()
是其中比较知名的一种。
另一方面, 指向 int
和char
指针 不可互换。 正如其他人指出的,由于这个原因,您的scanf()
调用会产生未定义的行为。
一般来说,除非有充分的外部驱动原因(例如需要处理getchar()
的返回值getchar()
,否则应使用char
而不是int
来表示字符数据。 更一般地说,正确地匹配数据类型,仔细考虑允许在哪里执行类型转换。
这个 -
scanf("%c",&i);
传递了错误的参数( %c
需要char的地址)。它将调用未定义的行为 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.