Ale*_*op. 5 c operator-precedence
我在看下面的代码:
#include <stdint.h>
void foo(uint32_t *pVal)
{
uint32_t i = 8;
*pVal = i *= 10;
}
Run Code Online (Sandbox Code Playgroud)
乍一看很明显,在返回之前foo(),*pVal将是80以及价值i.这确实是根据godbolt.org发生的事情:
foo: # @foo
push rbp
mov rbp, rsp
mov qword ptr [rbp - 8], rdi
mov dword ptr [rbp - 12], 8
imul eax, dword ptr [rbp - 12], 10
mov dword ptr [rbp - 12], eax
mov rdi, qword ptr [rbp - 8]
mov dword ptr [rdi], eax
pop rbp
ret
Run Code Online (Sandbox Code Playgroud)
但是从这里检查运算符优先级后,优先级=高于优先级*=,所以似乎值*pVal应为8,值i应为80 ...
我在这里错过了什么?
编辑: