タグ付けされた質問 「c」

9
Cは実際にチューリング完全ですか?
私は誰かにCがチューリング完全であることを説明しようとしていましたが、実際には技術的にチューリング完全であるかどうかはわかりません。(Cは、実際の実装ではなく、抽象的なセマンティクスのように。) 「明白な」答え(おおよそ:任意の量のメモリをアドレス指定できるため、RAMマシンをエミュレートできるので、チューリング完全です)は、C標準で許可されている限り、実際には正しくありません。 size_tを任意に大きくするには、一定の長さに固定する必要があり、固定する長さに関係なく、有限です。(つまり、任意の停止しているチューリングマシンが与えられた場合、「適切に」実行されるようにsize_tの長さを選択できますが、すべての停止しているチューリングマシンが適切に実行されるようにsize_tの長さを選択する方法はありません) だから:C99チューリング完全ですか?

2
Cのvoid型がempty / bottom型と類似していないのはなぜですか?
ウィキペディアと私が見つけた他のソースはvoid、空のタイプではなくユニットタイプとしてリストCのタイプを見つけました。void空の/下の型の定義によりよく適合するように思えるので、この混乱を見つけます。 void私が知る限り、値は存在しません。 戻り値の型がvoidの関数は、関数が何も返さないため、何らかの副作用しか実行できないことを指定します。 タイプのポインターvoid*は、他のすべてのポインタータイプのサブタイプです。また、void*C との間の変換は暗黙的です。 最後の点voidに、空の型であることの引数としてのメリットがあるかどうかはわかりvoid*ませんvoid。 一方、voidそれ自体は他のすべてのタイプのサブタイプではありません。これは、タイプがボトムタイプであるための要件であると言えます。
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

7
負の配列インデックスが意味をなすのはなぜですか?
私はCプログラミングの奇妙な経験に出会いました。次のコードを検討してください。 int main(){ int array1[6] = {0, 1, 2, 3, 4, 5}; int array2[6] = {6, 7, 8, 9, 10, 11}; printf("%d\n", array1[-1]); return 0; } これをコンパイルして実行しても、エラーや警告は表示されません。私の講師が言ったように、配列インデックス-1は別の変数にアクセスします。私はまだ混乱していますが、なぜプログラミング言語にはこの機能があるのですか?つまり、なぜ負の配列インデックスを許可するのですか?

1
C言語の構文はCFGによって完全に定義されていますか?
質問はそれだけで十分だと思います。C言語の構文は、コンテキストフリーの文法によって完全に定義されていますか、それとも、解析中に非コンテキストフリーの定義を必要とする可能性のある言語構成体がありますか? 非CFL構成の例として、使用前の変数の宣言を考えました。しかし、コンパイラ(Aho Ullman Sethi)では、C言語は名前に基づいて識別子を区別しないと述べられています。すべての識別子は、字句解析器によって「id」としてトークン化されます。CがCFGによって完全に定義されていない場合、誰でもCの非CFL構成の例を挙げていただけますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.