Я пишу небольшое тестовое приложение на C с GCC 4.8.4, предварительно установленным на моем Ubuntu 14.04. И я запутался в том, что выражение a=(b++); ведет себя так же, как и a=b++;. Используется следующий простой код:
#include <stdint.h>
#include <stdio.h>
int main(int argc, char* argv[]){
uint8_t a1, a2, b1=10, b2=10;
a1=(b1++);
a2=b2++;
printf("a1=%u, a2=%u, b1=%u, b2=%u.\n", a1, a2, b1, b2);
}
Результат после компиляции gcc a1=a2=10, а b1=b2=11. Тем не менее, я ожидал, что в круглых скобках будет b1 увеличено до того, как его значение будет присвоено a1.
А именно, a1 должно быть 11, а a2 равно 10.
Кто-нибудь узнает об этой проблеме?