C プログラムでタイプミスをしてしまい、コンパイルした理由と構文のポイントがわかりません。乗算代入演算子を使用しようとしました*=
が、誤って*-
. 次に例を示します。
#include <stdio.h>
int main()
{
double foo = 1.2;
foo *- 3.4; /* I meant to type foo *= 3.4; */
printf("%f\n", foo);
return 0;
}
(または g++)でコードをコンパイルするとgcc -Wall ctest.c
、次の出力が得られます。
ctest.c: In function `int main()':
ctest.c:5 warning: statement has no effect
printf
このプログラムを実行したときのステートメントの出力は です1.200000
。したがって、ステートメントは実際には の値に影響を与えないように見えますfoo
。
*-
オペレーターとは?ステートメントが効果がないにもかかわらず、その構文がコンパイルされる正当な理由はありますか?