【问题标题】:why this program does not give error? [duplicate]为什么这个程序不报错? [复制]
【发布时间】:2012-11-29 19:51:40
【问题描述】:

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

#include <stdio.h>

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

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

参考:C 编程 Ritchie/kernighan

【问题讨论】:

  • 在C语言中,char类型可以知道为整数或字符:) 当使用char variable作为整数时,它会在表格中打印其字符的普通数。当用作字符时,它将打印为字符
  • '我知道 C++' -- 显然不是,因为这段代码在 C++ 中的工作方式相同。

标签: c kernighan-and-ritchie


【解决方案1】:

它接受偶数字符

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

即使它返回char,因为charint 都是具有相同符号的整数类型,并且intchar 宽,int 始终可以使用以下方式存储char隐式转换(有时称为“向上转换”,但它不是真正的转换,因为它是隐式的)。基本上这意味着

int n = 'a';

是完全有效的 C。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      相关资源
      最近更新 更多