2016-09-07 2 views
0

Есть ли когда-либо какой-либо cuircumstance, где следующие алгоритмы: не равно?Почему * = решить после +

int var1 = 2; 
int var2 = 5; 
int var3 = 7; 

// Scenario 1 
var1 *= var2 + var3; // <-- 24 

// Scenario 2 
var1 = 2; 
var1 *= (var2 + var3); // <-- 24 

Я спрашиваю потому, что msdn site гласит следующее:

Эти операторы имеют более высокий приоритет , чем в следующем разделе и более низкий приоритет, чем в предыдущем разделе.

Однако, по моему тестированию, похоже, что это не так? И это даже без скобок, кажется, решает, как будто у него есть скобки.

Я бы мысли о том, что алгоритмы будут равны:

// Scenario 1 
var1 = var1 * var2 + var3; // <-- 17 

//Scenario 2 
var1 = var1 * (var2 + var3); // <-- 24 


Так что подразумевается под сайт MSDN и в каких случаях их утверждение верно?

C# скрипку для тестирования:

https://dotnetfiddle.net/Yt5ZBO

+3

Двоичный оператор '* =' имеет более низкий приоритет, чем двоичный оператор '+'. – zerkms

+0

@zerkms, поэтому сайт msdn не так ли? или я что-то пропустил? – Zze

+1

Это не так. Почему это? – zerkms

ответ

4

Так что подразумевается под сайт MSDN и в каких случаях их утверждение верно?

Это означает, что именно он заявляет: разделы упорядочены от более высокого до более низкого приоритета.

В их операторе список *= (это один оператор и его приоритет не имеет отношения с преимущественным либо = или *) имеет более низкий приоритет, чем двоичный + оператор.

Так оценивается +.

+0

Я ошибся, я смотрел раздел ** Арифметическое переполнение **, а не раздел ** Присадки **. * whoops * – Zze

0

Эти операторы имеют более высокий приоритет, чем в следующем разделе -

Вы добавили (+, -, *, /) к этой цитате (неправильно) (+, *, /), что он на самом деле говорит,:

Эти операторы имеют более высокий приоритет, чем следующий раздел и более низкий приоритет, чем предыдущий раздел.

+ находится в разделе предыдущая, поэтому он имеет более высокий приоритет.

+0

oh whoops - ха-ха, я действительно испортил эту цитату – Zze

Смежные вопросы