Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编程-将字符存储到INT? #包括 内部主(空) { INTC; 而((c=getchar())!=EOF) 普查尔(c); 返回0; }_C - Fatal编程技术网

C编程-将字符存储到INT? #包括 内部主(空) { INTC; 而((c=getchar())!=EOF) 普查尔(c); 返回0; }

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; } 它不

在这个程序中,有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;
}

它不应该起作用。就好像我输入了“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
值,将其转换为
无符号字符
,然后打印与该值关联的相应字符。通常为ASCCI
y

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);