文章预览
▌ 今天群里的激烈讨论代码 # include "stdio.h" # include "stdio.h" int main () { int i = 0 ; int value = ++i+i++; printf ( "%d\n" , value); return 0 ; } 我们先从正常的逻辑讨论下这个问题 这里需要考虑下i运算符的优先级 然后,并没有什么用处 ++ 的优先级高于 + ++ 和 + 的优先级高于 = 那++i 和 i++ 都被执行了一次 1 + 2 = 3 . ▌ 我写了一个脚本,用来转换并执行汇编代码的 # 1125.sh #gcc -O0 -S 1125.c as -o 1125.o 1125.s ld -m elf_x86_64 -dynamic-linker /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 "1125.o" /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o -lc -o "1125_64" sudo chmod 777 1125_64 ./1125_64 在生成的汇编代码中,我们可以修改汇编,然后再执行看结果 .file "1125.c" .text .se
………………………………