Я пишу небольшое тестовое приложение на 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
.
Кто-нибудь узнает об этой проблеме?