修正したの初期化だけじゃんか
普段なら適当なこと言っても困るのは本人だし、突っ込んでる人も遊び半分だからいいけど
言語解説とかは困るのは参考にした初心者の人だからマジで
int main(void){
  int a,b;
  {
    b=0;
    a=50*(b+10);
    printf("%d,",a);
  }
  printf("%d,\n",a);

  return 0;
}
> このようなコードを書いた場合、ローカル変数は関数を抜けた時に解放されるため、
> aとbの領域は空っぽの状態にリセットされます。
実行結果が「500,500」になりました。値生きてます。
話の流れ的にここは「関数」というよか「ブロック」じゃないの?

a=50*(b+10);
> 10の変数(数値)をbの領域に代入します。
> この時点では、aの領域は空っぽです。
10は変数なの?+は代入の機能持ってんの?変数bのメモリ領域に10が入ってるけどどうしてくれんのこれ?

あと初期化についてだけど
僕の環境では初期化しないとコンパイルの時に警告 演算に使用とすると強制終了。
でもリリースではコンパイル警告後 演算は通った。
初期化しない状態では2015115236が入ってた。
偶然でた値なのか決まってる値なのかは別として、これを値として扱える以上は空っぽではないんじゃないの?

初心者なめすぎじゃね?初心者でもこの程度は気になるほどには賢い人は賢いよ