为什么这个程序不会出错?

时间:2012-11-29 19:51:40

标签: c kernighan-and-ritchie

  

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

#include <stdio.h>

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

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

参考:C编程Ritchie / kernighan

2 个答案:

答案 0 :(得分:2)

  

它接受偶数字符

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

即使它返回char,因为charint都是相同签名的整数类型,int宽于char,{ {1}}总是可以使用隐式转换来存储int(有时它被称为“向上转换”,但它实际上不是强制转换,因为它是隐式的)。基本上这意味着什么

char

完全有效C.

答案 1 :(得分:1)

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

其次,char在分配时扩展为int