Я сделал опечатку в программе на C, и я смущен, почему она скомпилирована и какова точка синтаксиса. Я пытался использовать оператор назначения умножения *=
, но случайно набрал *-
. Вот пример:Почему * - синтаксис/оператор действителен в C/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;
}
Когда я компилировать код с gcc -Wall ctest.c
(или г ++) Я получаю следующий вывод:
ctest.c: In function `int main()':
ctest.c:5 warning: statement has no effect
Выход printf
заявления при выполнении этой программы является 1.200000
. Таким образом, утверждение действительно не влияет на значение foo
.
Что такое оператор *-
? Есть ли веская причина, почему этот синтаксис компилируется, хотя утверждение не имеет никакого эффекта?
Два оператора, '*' и унарные '-'. –
Вау, об этом ответили невероятно быстро. Благодаря! – mowen
Существует много [recrcketing]] (http://en.wikipedia.org/wiki/Rebracketing) вопросов о переполнении стека :) – dasblinkenlight