29
A
答えて
36
はい - C標準ISO/IEC 9899:1999別称、C99(およびC++)の規格は、これがそうでなければならないと言います。正確なテキストについては、6.7.8項(「初期化」)の項目10をWG14 N1256にしてください。いくつかのコンパイラは常に(ゼロに失敗した任意のコンパイラを静的変数を初期化しない場合がありますので、
static int idx = 0;
は
これを行う理由はない。他の人が指摘したように
は、常に静的変数を初期化することをお勧めしますそのような初期化を行うには、最終的には壊れてしまい、CまたはC++コンパイラであると主張することはできませんでした)、それはあなたが意味するものを言います - プログラミングの最も基本的なルールかもしれません。
3
標準では「はい」と表示されていますが...良い方法では、は常にの初期変数を指定する必要があります。コンパイラを変更したときや、別のマシンでコンパイルしなければならないときは、予期せぬ動作の可能性を最小限に抑える必要があります。
関連する問題
- 1. __m128i配列をgccで静的に初期化するには?
- 2. 静的変数の初期化java
- 3. PHP静的変数の初期化
- 4. 非静的変数の初期化
- 5. jsr 303番号を検証し、自動的に0に初期化します。
- 6. 春の静的初期化Springの静的初期化
- 7. プライベート静的メソッドを使用して静的変数を初期化する
- 8. 静的const配列はMSVCで動的に初期化されますか?
- 9. Pythonに静的コンストラクタまたは静的初期化子がありますか?
- 10. マルチスレッドコンテキストで静的変数を初期化する方法は?
- 11. Java静的初期化ブロック
- 12. 整数配列の静的初期化
- 13. 例外後にローカル静的変数の初期化を再試行します。
- 14. ユニット初期化中に静的変数を変更してテストする
- 15. コードイグナイター:Tank_auth設定は自動的に初期化されます
- 16. 非定数静的メンバー変数のC++初期化?
- 17. clang ++はローカル静的変数のスレッドセーフ初期化を行いますか?
- 18. 静的変数は特定のスレッドで初期化されていますか?
- 19. グローバル変数0に初期化ペナルティ
- 20. 0でテクスチャを効率的に初期化するには?
- 21. メイン内の静的クラス変数の初期化
- 22. 抽象クラスとサブクラスでの静的変数の初期化
- 23. C++静的変数の初期化とスレッド
- 24. C++静的const構造体変数の初期化
- 25. Cでの静的変数宣言/初期化の理解
- 26. C++ DLLの作成:静的変数の初期化の問題
- 27. クラス内に動的静的変数を作成しますか?
- 28. 非最終静的フィールドの静的初期化は安全ですか?
- 29. C++静的constテンプレートメンバの初期化
- 30. Goでの静的初期化?
もう一度...明示的に静的変数をゼロ初期化することの引数は、実行可能ファイルのサイズを拡張します。これは、もはや.bssには存在しないからです。 – ephemient
私はそれがなぜそうであるべきかわからない。コンパイラは、明示的なゼロの初期化を簡単に無視できます。 –
実装の詳細。 GCC 4.2とMSVC 7.1は 'static int a;'と 'static int a = 0;'を同等に扱っているようです。私は覚えていないコンパイラを覚えていますが、十分に古いものは手元にないようです。 – ephemient