1.0 はデフォルトで double です。正しい値が 1.2 の場合、暗黙的なキャストが行われ、値は double から float にキャストされます (キャストはランタイム操作ではありません)。この場合、1.2f と呼ぶことは重要ではありません。プログラマーはたいていそれを悪用しますが、それが本当に重要な場合もあります。
例えば:
float var= 1.0e-45;
NSLog(@"%d",var==1.0e-45);
1.0e-45 は小さすぎて単精度浮動小数点変数に格納できないため、これはゼロを出力し、ゼロに等しくなります。var==1.0e-45f と書くと結果が変わります。
フォーマット指定子を使用することは、式を記述するときに最も重要です。左の値は浮動小数点数であるため、式も浮動小数点数として扱われると予想されますが、そうはなりません。
より印象的なケースは、l フォーマット指定子を数値に使用してゼロになるまで大幅にシフトした場合で、その結果に驚かされます。
long var= 1<<32; // I assume that an int takes 4 bytes and a long 8 bytes
結果はゼロで、1l<<32 を書き込むと結果が完全に変わります。