2012-11-29 90 views
0

可能重複:
int c = getchar()?爲什麼這個程序不會給出錯誤?

#include <stdio.h> 

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

我沒有使用C的經驗,但我知道C++。我想問的是'C' 在這裏被聲明爲整數類型但令人驚訝的是,當我運行這個程序時,它甚至接受字符。任何人都可以解釋。

編號:C編程裏奇/ Kernighan的

+0

在C中,char類型可以知道爲整數或字符:) 使用'char變量'作爲整數時,它將在表中打印其字符的普通數。 和當作爲字符使用時,它將打印爲字符 – hqt

+0

'我知道C++' - 顯然不是,因爲此代碼在C++中工作相同。 –

回答

2

它也會接受字符

其實,getchar()回報int,因此在這裏沒有問題。

即使它返回char,因爲這兩個charint都是整數類型相同的符號性和intchar寬,一個int可以使用隱式轉換總是存儲char(有時這就是所謂的「向上轉型」,但這不是真的,因爲它是隱含的)。基本上,這是什麼意思是

int n = 'a'; 

是完全有效的C.

1

首先,getchar返回int,不char

其次,char被分配爲int

相關問題