Есть вызов
int pos = ...;
msg.Substring(++pos, msg.Length - pos).Trim();
гарантируется ли стандартом прямой порядок вычисления значений аргументов?
з.ы. вопрос возник, т.к. в плюсах он неопределен (т.е. на усмотрение компилятора)
Здравствуйте, Аноним, Вы писали:
А>Есть вызов
А>А>int pos = ...;
А>msg.Substring(++pos, msg.Length - pos).Trim();
А>
А>гарантируется ли стандартом прямой порядок вычисления значений аргументов?
Да. При наличии сайд-эффектов и зависимости по данным строго слева направо.
http://msdn.microsoft.com/en-us/library/aa691335.aspx.
При отсутствии оных — в любой последовательности
http://msdn.microsoft.com/en-us/library/aa691105.aspx. Но это к нашему случаю не относится.
Здравствуйте, Аноним, Вы писали:
А>гарантируется ли стандартом прямой порядок вычисления значений аргументов?
Да, гарантируется.
7.4.1 Argument lists
....
During the run-time processing of a function member invocation (§7.4.4), the expressions or variable references of an argument list are evaluated in order, from left to right, as follows:
• For a value parameter, the argument expression is evaluated and an implicit conversion (§6.1) to the corresponding parameter type is performed. The resulting value becomes the initial value of the value parameter in the function member invocation.
• For a reference or output parameter, the variable reference is evaluated and the resulting storage location becomes the storage location represented by the parameter in the function member invocation.