気になったのでちょっと調べてみた

はじめてのにき(2008-06-28)にて

int main() {
    int p = 1;
    if (p > 0) {
        int p = printf("%d\n", p);
    }
}

を実行したら0が表示されたとのこと。
気になったので手元で実行したりしてみた。手元(VM上のUbuntu, gcc-4.2.3)では 134513641 と表示された。
アセンブリに直したりして考えて見たところ

int main() {
    int p = 1;
    if (p > 0) {
        int p;
        p = printf("%d\n", p);
    }
}

と同じだってことに気づく。
あー初期化されてない変数を出力してたのか。だったら0と表示されてもおかしくないなー。