Контекст использования в C
необходим для понимания нескольких многоцелевых символов, таких как символ +
, который сам по себе имеет как минимум 3 использования, обычно встречающихся в выражениях C
:
- оператор сложения (например,
int a = 3 + 5;
) - знак, указывающий положительное значение (например,
int a = +3 - (+3);
) - и, при удвоении, инкрементатор значения. (
for(int a=0; a<limit; a++)
)
При использовании с другими многоцелевыми символами, такими как *
, определение, является ли это знак , оператор или инкремент по контексту использования.
Обычно в этом контексте вы бы использовали неявный знак +
:
int a=(i*3);// i * +3
Но также допустимо (но не так читаемо) использование явного подписать. Таким образом, в контексте использования в этом утверждении ...
int a=(i*+3);// by context '+' is a sign in this case, not an operator
... просто использует явный знак для 3
, и два утверждения эквивалентны.
Более читабельный версия:
int a=(i * (+3));
Еще один похожий, по-видимому, запутанный сценарий, но контекстуально значимый:
int func(int *value){
int a = 10+*value;//by context '*' is de-referencing 'value' not multiplying
return a;
}
Примечание: удобочитаемость могла бы быть улучшена с помощью пробелов:
int a = 10 + *value; //spacing is good for readability and removing ambiguity