お世話になってます
C++のローカル変数は初期化しなければ不定と言われていますが、
あるコードで、冒頭で宣言していて、実行するといつも0になります。
初期化すればいい話ですが、ショートコーディングで使えないかと思いました。
例えば
cpp
1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 char a,b; 7 cout << (int)a << endl; 8 cout << (int)b << endl; 9}
a,bはともに0('\0')でした
幾つか仮説を考えてみました
- やはり偶然で、コード、コンパイル以外に依存する
- 冒頭char宣言は、何かしら条件はあるが0固定で、その条件をたまたま満たしている
たとえばグローバルに関数を一切書かないとか
3. コードから推測はできないという意味で不定だが、同じコードであれば一定
4. コンパイラ、もしくはオプションがなんかしている
1以外なのかもしれないと思い、質問をさせていだだきました
コンパイルは、
EclipseでMacOS標準のものを使うよう設定したもの
clang++ main.cpp -g -O0 -m32
などです
一定だと考えて大丈夫でしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/26 11:35