C编程-将字符存储到INT? #包括 内部主(空) { INTC; 而((c=getchar())!=EOF) 普查尔(c); 返回0; }
在这个程序中,有c=getchar()。所以我假设getchar返回一个整数,而不管您键入什么 如果是这样,如果我有代码:C编程-将字符存储到INT? #包括 内部主(空) { INTC; 而((c=getchar())!=EOF) 普查尔(c); 返回0; },c,C,在这个程序中,有c=getchar()。所以我假设getchar返回一个整数,而不管您键入什么 如果是这样,如果我有代码: #include <stdio.h> int main (void) { int c; while ( (c = getchar ()) != EOF ) putchar (c); return 0; } #包括 内部主(空) { 字符c; c=getchar(); printf(“%c”,c); 返回0; } 它不
#include <stdio.h>
int main (void)
{
int c;
while ( (c = getchar ()) != EOF )
putchar (c);
return 0;
}
#包括
内部主(空)
{
字符c;
c=getchar();
printf(“%c”,c);
返回0;
}
它不应该起作用。就好像我输入了“y”一样,getchar函数可以返回一个2位数或更多的整数,并且不能存储在char变量中。然而,它奏效了。。。。事实上,当我输入“f”时,c变成了f。但是为什么呢 字符是整数,或者更确切地说,在某些上下文中,某些整数值被解释为字符。类型
char
在C中只是一个整数类型,因此int
可以保存char
的所有值
getchar
返回int
的一个原因是,特殊值EOF
不是表示字符的任何整数值(如果是,则无法区分文件结尾和输入的字符)。一旦您检查了getchar
返回的值不是EOF
,所有其他可能的返回值都是字符
在这个程序中,有c=getchar()。所以我假设getchar返回一个整数,而不管您键入什么
对。详细信息:int getchar()
返回的不是任何整数,而是一个int
。返回值要么在无符号字符
范围内(例如0…255),要么在EOF
范围内<代码>EOF为负值
。。。不应该工作。就好像我键入了“y”一样,getchar函数可以返回一个2位数或更多的整数,并且不能存储在char变量中。然而,它奏效了。。。。事实上,当我输入“f”时,c变成了f。但是为什么呢 如果用户键入y,则典型的REUSELT值为121(ASCII y)。
int
in不是“两位数或更多”。int
是存储在内存中的值,通常为32位。它不存储为“数字”
printf(“%c”,c)
接受一个int
作为匹配“%c”
。作为char
,c
在传递到printf(char*format,…)
之前经过整数提升(到int
)
以下内容通常都打印相同的内容<代码>%c“接收int
值,将其转换为无符号字符
,然后打印与该值关联的相应字符。通常为ASCCIy
char c = getchar();
printf("%c",c);
我不明白这个问题
char
是一种整数类型。我们有手册页--也许可以阅读它们??聊天室不是整数类型?“例如,y是一个整数。在ASCII系统上,'y'
正好是121
,例如,在printf(“%c”,c)中
变量c
如果尚未升级为int
,则会升级为int
。您可以为%c
格式传递int
值。请注意,许多C库函数都使用int
,新手除了使用char
,例如getchar
和isupper
和strchr
。从技术上讲,getchar()
结果并不总是可以用char
表示,因为char
的范围通常为-128…+127,getchar()
在大多数系统上返回0…255和EOF。@DietrichEpp有趣的一点;即使位模式(以及字符)是可表示的,整数值也可能确实不可表示。我对答案进行了编辑,使之成为较弱的语句“所有其他可能的返回值都是字符”。最佳答案:)我是一个初学者,所以我对记忆和值类型感到困惑。非常感谢。
char c = getchar();
printf("%c",c);
char c = 'y';
printf("%c", c);
printf("%c", 'y');
printf("%c", 121);
printf("%c", 121 + 256);