3

だから、まず私は以下を読みました: http://www.hpc.unimelb.edu.au/nec/g1af02e/chap1.htmlそれは私に次のことを伝えます:

K&R C および SUPER-UX K&R C 数字 8 および 9 が許可されます。これらは 10 進整数定数と見なされます。

私は少し混乱しています...もう少し探しました...これを見つけました:http://docs.oracle.com/cd/E19205-01/819-5265/bjbfb/index.html

それは私にこれを教えてくれます:

8 進エスケープ シーケンスで 8 または 9 を受け入れます。

しかし、によると:http://en.wikipedia.org/wiki/Octal

8 進数システム、または略して oct は 8 進法であり、0 から 7 までの数字を使用します。

そして今、私は本当に混乱しています。私は実際に K&R C コンパイラを使用する機会がありませんでした... では、なぜ K&R C は 8 と 9 を 8 進数として受け入れるのでしょうか... これはどのように処理されますか? 「実際の」8進法では、それらの値はどうなりますか?

4

2 に答える 2

5

K&R C はそれほど厳密ではなかったので、ANSI-C (およびそれ以降の) コンパイラが許可しない多くのことが許可されていました。

「8 進数」 0193は と同等です1*8^2 + 9*8^1 + 3。忌み嫌う?はい。

于 2013-11-11T08:14:07.213 に答える
4

最新の C では、1989 年の ANSI C 標準以降、8 進数は 0 から 7 までです (文字および文字列リテラルと整数定数の両方の 8 進数エスケープの場合)。

K&R C は、1978 年の Kernighan と Ritchie の「The C Programming Language」の第 1 版で記述された (ほとんど廃止された) 言語で、8 進数で 8 と 9 を許可し、それぞれの値は 8 と 9 でした。

たとえば、最新の C では定数019は構文エラーですが、K&R C では値が 17 でした。

于 2013-11-11T08:13:02.050 に答える