我正在完成这个计划:
#include<stdio.h>
main()
{
int c;
c = getchar();
while(c != EOF) {
putchar(c);
c = getchar();
}
}
由于变量c
是整数,它应该存储给定输入的整数等价值。输出显示'a'
打印为'a'
,'b'
打印为'b'
,'c'
打印为'c'
但是,当我输入值65
时},输出也是65
!因此,值65
和char 'a'
两个值如何相互区别?
答案 0 :(得分:2)
这是因为输入65
被视为两个不同的字符输入,程序正在按顺序打印它们。
当您输入6
时,程序会立即读取它并检查它是否为EOF
,因此它会将其打印到控制台。然后,当您输入5
时,它再次将其作为输入。由于这也不是EOF
,您的程序会再次打印它。
所以你输入两个字符,这个程序正确地将它打印到控制台,就像它应该做的那样。除此之外,没有歧视。 a
的等价整数等于65,因此如果您打印这样的字符,它将打印65 -
char c = 'a';
printf("%d", c); // will print 65
这将打印a
-
int i = 65;
printf("%c", i); // will print a
答案 1 :(得分:1)
您的代码完全按照书面形式执行,但是,您对程序输入的理解存在困惑。
当您输入65
时,它被解释为两个类型字符,即'6'
和'5'
。正如您所指出的,每次在while循环中调用putchar(c)
时,都会向控制台回显。
答案 2 :(得分:1)
不,65和'a'的存储没有区别。将这些中的任何一个分配给变量会产生完全相同的结果。差异仅与char的输入和输出有关。例如。 printf(“%c”,65)产生'a',因为它是printf()
定义的一部分。对于您提到的其他两个函数putchar()
和getchar()
也是如此。