a + bはdouble型
%fはdouble型を出力する書式だから意図通りに表示される
一方%dはint型を出力する書式だからそこにdoubleを突っ込むとおかしな表示になる
%dで正しく表示したければ次のようにa+bを明示的にintに変換する必要がある
printf("%d", (int)(a+b));