C,C++,javaでの未初期化変数の扱われ方
主に文字列の場合
ただfor文やif文を絡めるとまた挙動がかわってきます。
今回はprintでの文字列の出力のみです。
C言語の場合
int型の場合コンパイルエラーにならないがchar型の場合,
コンパイルエラーになる
×
char str[]; printf("%s\n",str);
○
char str[] = "hoge"; printf("%s\n",str);
javaの場合
コンパイルエラーにはならず実行してみるとnullが出力される。
ただオブジェクト参照の場合は実行時にNullPointerExceptionが起きる。
public class hello{ static String name; public static void main(String[]args){ System.out.println(name); } }
C++の場合 コンパイルエラーにはならなかったがstd::endlの改行だけ出力された。
include <iostream> using namespace std; int main() { string name; std::cout << name << std::endl; return 0; }
結論
とりあえずバグの原因になるから初期化は必ずしよう