2016-07-02 4 views
-4

このコードでは、gccとturbo cコンパイラで異なる出力が得られます。 なぜこれらのコンパイラでascii値に違いがありますか。異なるコンパイラのascii値に違いがある理由

#include <stdio.h> 


int main() 
{ 
int n=1; 
while (n<70){ 
printf("Ascii value is %c\n",n); 
n++; 
} 

return 0; 
} 

上記のプログラムは、gccとturbo cの値の違い、例えば1 - 16やそれに類する値を出力します。 なぜそうですか?

+4

最初の32文字は実際には印刷できませんが、印刷可能なものは環境によって異なります。 [ASCIIテーブル](http://en.cppreference.com/w/cpp/language/ascii)をチェックして実際に印刷可能な文字を確認することをお勧めします。または、標準['isprint'](http://en.cppreference.com/w/c/string/byte/isprint)関数を使用してください。 –

答えて

7

これはコンパイラではなく、異なるグリフを表示するコンソールです(最初の32文字は印刷できません)。ただし、グリフ32から126まではすべてのケースで同じように保証されています。

+4

これです。 Turbo CはDOSエミュレータ上で動くので、これはほぼ確実に出力エンコーディングです。 –

+0

はい、ほぼ確実にASCIIではありません。 'chcp'を実行して、端末が何を使用しているか調べます。 (@Paul、CP437は印刷可能な文字が<32) –

+0

はい私はVGA文字を見たことがあり、 '\ n'でも改行ではなくグリフが付いています(後で改行になります) –

関連する問題