問題タブ [c99]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - sizeof(char) != 1、または少なくとも CHAR_BIT > 8 のマシンはありますか?
マシン (またはコンパイラ) はどこにありsizeof(char) != 1
ますか?
C99標準は、sizeof(char)
標準準拠の実装では正確に1でなければならないと言っていますか? もしそうなら、セクション番号と引用を教えてください。
更新:uint32_t
バイトをアドレス指定できないマシン (CPU) を使用している場合 (最小読み取りは 4 バイト、整列)、4 バイト ( )
しかアドレス指定できない場合、このマシンのコンパイラは 4 に定義でき sizeof(char)
ますか? sizeof(char)
1 になりますが、char は 32 ビットになります(CHAR_BIT
マクロ)
Update2: しかし sizeof 結果は BYTES ではありません! CHAR のサイズです。char は 2 バイトにすることも、7 ビットにすることもできますか?
Update3: わかりまし
た。すべてのマシンにはsizeof(char) == 1
. しかし、どのマシンが持っていCHAR_BIT > 8
ますか?
c - C89 対 c99 GCC コンパイラ
c89 と c99 を使用して次のプログラムをコンパイルすると、違いはありますか? 同じ出力が得られます。両者の間に本当に違いはありますか?
c - 新しい C ブックが C99 標準に準拠していないのはなぜですか?
私が見たほとんどすべての (比較的) 新しい c プログラミングに関する本は、C99 標準に準拠していないように見えるか、追加の章でカバーしています。Java のバックグラウンドを持つ私にとって、C99 標準は移行 (まあ、まだ移行中です ^^) をはるかに簡単にしてくれました。これはおそらく他の言語にも当てはまります。
C99 はまだほとんどの C 開発者に届いていないようです。しかし、なぜ?
c - 割り当て評価の順序 (最初のコンパイラ バグを見つけましたか?)
このコードには興味深いバグがあります:
ほとんどのコンパイラでは、上記のコードにより、それぞれの配列内のすべての構造体の「値」フィールドが 1 に設定されます。ただし、ある特定のコンパイラ (xcc と呼びましょう) では、struct_array1 の構造体が正しく初期化されません。「値」フィールドはすべての構造体で 0 に設定されていますが、これにはちょっと驚きました。
次のコード スニペットは、すべてのコンパイラで期待どおりに機能します。
さて、私は完全にここから離れていますか、それとも問題のあるコンパイラ「xcc」が単にバグを表示しているだけなのでしょうか?
最初のコード スニペットで実装固有の動作を示すものは見つかりません。私が理解していることから、後置インクリメントは割り当てよりも優先され、割り当ては右から左に評価されるべきです。最初のコード スニペットは、少し読みにくいことを除けば、おかしなことは何もないはずです。
c++ - 何年にもわたる C++ の後で C を学習するための優れたクイック リファレンスはどこにありますか?
私が C をプロとして最後に使用したのは 1997 年の IIRC 頃でした。それ以来、私は多くの C++ を使用してきました。ここで、もう一度 C を使用する必要があることがわかりました。
私が確信していることの 1 つは、明らかな C++ 機能 (クラスなど) を削除して、すべてが機能することを期待することはできないということです。あまり目立たないさまざまな構文の変更があります。私は彼らが何であるかを覚えていません。
その移行を再度行い、C に戻るための良いリファレンスはありますか? C99 (およびそれ以降?) の変更点が説明されている場合、それはさらに優れています。
c - 次の C 標準は積極的に開発されていますか?
現在、次の C 標準 (つまり、C99 以降) に取り組んでいるグループはありますか? もしそうなら、それを作る可能性が高い機能は何ですか?
c - CがC99より前のブールデータ型を持っていなかったのはなぜですか?
いくつかの整数しか使用できないことはわかっていますが#define
、C99より前にCに専用のブールデータ型がなかったのはなぜですか?
これはプログラミングやロジックでよくあることですが、明示的な型や表記法がないことはわかりません。
c - C99コードの文字精度の高い識別子の相互参照を取得するにはどうすればよいですか?
私はいくつかの適度なサイズのCプログラムを維持しており、完全に正確な相互参照情報を頻繁に使用しています。「タグ」やその他の近似とは異なり、このような情報は通常、C言語の完全なスコープ規則を認識し、それに応じて正確な情報を提供できるコンパイラによって生成されます。たとえば、 lcc
コンパイラから取得した情報のスニペットは次のとおりです。
これは、関数eval
がソースファイルscheme.nw
の行4101、列0で定義されており、eval
使用されているすべての場所も一覧表示していることを示しています。
私の問題:lcc
ANSI Cでのみ機能し、私のプロジェクトのほとんどはC99に移行しています。 どのコンパイラまたはツールがC99プログラムの完全に正確な相互参照情報を提供しますか?
Linuxのサポートは必須です。自由ソフトウェアは素晴らしいでしょうが、絶対に必要というわけではありません。
c - C、単一の入力行から複数の数値を読み取る(scanf?)
入力時に2行を期待するアプリをCで作成しました。最初の入力はintの配列の大きさを示し、2番目の入力にはスペースで区切られた値が含まれます。たとえば、次の入力
を含む配列を作成する必要があります{1,2,3,4,99}
そうするための最速の方法は何ですか?私の問題は、文字列全体をループせずに複数の数値を読み取って、それがスペースか数値かを確認することです。
ありがとう。
c++ - C / C99 / C ++ / C ++ x / GNU C /GNUC99の列挙型の符号
タイプは符号付きですか、enum
それとも符号なしですか?列挙型の符号は、C / C99 / ANSI C / C ++ / C ++ x / GNU C / GNU C99の間で異なりますか?
ありがとう