繁体   English   中英

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

[英]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()是其中比较知名的一种。

另一方面, 指向 intchar 指针 不可互换。 正如其他人指出的,由于这个原因,您的scanf()调用会产生未定义的行为。

一般来说,除非有充分的外部驱动原因(例如需要处理getchar()的返回值getchar() ,否则应使用char而不是int来表示字符数据。 更一般地说,正确地匹配数据类型,仔细考虑允许在哪里执行类型转换。

这个 -

scanf("%c",&i);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM