gpt4 book ai didi

c++ - char 数组等于 int 吗?

转载 作者:行者123 更新时间:2023-11-30 18:31:22 26 4
gpt4 key购买 nike

我试图弄清楚为什么将 char 数组分配给 int 值,现在我对使用强制转换运算符感到有点困惑。

我没有明白 do 语句中的内容,希望有人能解释一下

 char *readword()
{
int c,i;
char t[255];
char *p;

//jump over chars who aren't letters
while ((c=getchar())<'A'|| (c>'Z' && c<'a') || c>'z')
if (c==EOF) return 0;

i=0;

do {
t[i++]=c;// shouldn't be like (char)c
} while ((c=getchar())>='A' && c<='Z' || c>='a' && c<='z');

//keep the word in heap memory
if ( c==EOF)
return 0;

t[i++]='\0';

if ((p=(char *)malloc(i))==0)
{
printf(" not enough memory\n");
exit(1);
}

strcpy(p,t);
return p;
}

最佳答案

getchar() 函数返回 int 类型;使用 int 来捕获 getchar() 返回值非常重要。这是因为如果 getchar() 失败,它会返回一个 (int)(EOF)(根据 chux 注释)。当它成功返回时,它将返回一个适合 char 的值。

问题代码正在构建一个char字符串或数组,一次一个char:

t[i++]=c;

上面的行可以写成:

t[i++]=(char)c;

由于编译器会自动转换第一种情况,因此两者都适合。

关于c++ - char 数组等于 int 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23919878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com