0

可能重复:
int c = getchar()?

#include <stdio.h>

   main()
   {
       int c;
       c = getchar();
       while (c != EOF) {
           putchar(c);
           c = getchar();
       }
   }

我没有使用 C 的经验,但我知道 C++。我想问这里的“c”被声明为整数类型,但令人惊讶的是,当我运行这个程序时,它甚至接受字符。谁能解释一下。

参考:C 编程 Ritchie/kernighan

4

2 回答 2

2

它接受偶数字符

实际上,getchar()返回int,所以这里没有问题。

即使它返回char,因为charint都是相同符号的整数类型并且int比 更宽char,所以 anint总是可以char使用隐式转换来存储 a (有时它被称为“向上转换”,但它并不是真正的转换,因为它是隐式的)。基本上这意味着

int n = 'a';

完全有效 C.

于 2012-11-29T19:53:26.573 回答
1

首先,getchar返回一个int,而不是char

其次,char扩大到一个intat任务。

于 2012-11-29T19:53:54.407 回答