質問: int main(void) { printf("%f", MOD(3.2, 2)); return 0; } 上記のようなコードを入力してコンパイルすると、2行目のprintf記述に対して 次のようなエラーメッセージがでます。 '%': 無効です。左オペランドには型 'double' が指定されています。 %dにして引数も整数にすれば問題ないのですが、実数にすると必ずエラーが出ます。 初心者ゆえ無知ですがよろしくお願いします。
回答: > > printf("%f", MOD(3.2, 2)); > > > 書式文字列の %f は、doubleを引数とすべきものですが、実際には int の数値を引数としてしまっているために、そのエラー(ワーニング?)が出てしまっています 別回答にあるように、% の演算子は整数演算の演算子なので、その結果はintとなります。 で、これをどーにかしたい、という場合は、書式文字列をint対応のものに変える、か、 MODマクロを浮動小数点数を返すものに変える、か、 ですね