int a = 10;
a = ++a * ( ++a + 5);
выше вида выражений всегда оцениваются слева направо так: C или JAVA
в этом случае он решает аналогично 11 * (12 + 5), что приводит к 11 * 17 = 187 // wrt java
, но если он решает одно и то же выражение по C-language
, тогда ответ изменяется как способ оценки изменений
в c происходит первый предварительный приращение / предварительный декремент, поэтому, если в выражении есть «N», то в выражении нет inc inc / dec, тогда inc / dec произойдет сначала «N» no times
то одно и то же значение будет заменено в каждом вхождении переменной в выражение и вычисляется значение выражения и после этого происходит приращение / декремент post
, т.е. a увеличивается с шагом 11, затем снова 12, так как есть два приращение для a в выражении, а затем выражение оценивается как
12 * (12 + 5) = 12 * 17 = 204 // wrt C-language