В сегменте кода, я видел эту неуплотненном форму:старшинства и associatives в C
while(p1>=str1)
{
*p2 = *p1;
p1--;
p2++;
}
в то время как уплотненная форма выглядит примерно так:
while(p1>=str1)
{
*p2++ = *p1--;
}
, что делает этот код, как ясно показано в некомпактной форме он сначала копирует содержимое указателей, прежде чем увеличивать p2 и уменьшает p1, но как это может быть указано, что приоритет ++ выше, чем оператор присваивания в C? Я думал, что может быть оператор some(), чтобы заставить это, но в книге это правильно. Может кто-нибудь объяснить это? Thanks
но почему скобки не используются тогда в этом случае? Я думал, что скобки должны были использоваться без них, синтаксис не так уж и прав, и это вопрос, почему синтаксис правильный? – helpdesk
Синтаксис верен, потому что операторы постфикса не считаются частью оценки операторов до тех пор, пока оценка не будет оценена (не совсем правильно, но простой способ подумать об этом). На самом деле, хотя я не уверен, что это также относится к C, я помню, что чтение операторов postfix не рекомендуется для использования в C++, поскольку они вызывают временную копию переменной, к которой применяется оператор, предположительно, чтобы использовать старое значение, позволяя сохранить новое значение. – JAB