差一点就懂了
先看看 有点坑居然要10个鱼币
还可以
鱼哥,出现左值错误,是因为把常量当作变量用了么?
没看懂的,我瞎yy一下
#include <stdio.h>
int main()
{
int a = 5;
a++;
++a;
return 0;
}
对应的汇编代码如下
.file "hello.c"
.text
.globlmain
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
//将5赋值给a
movl $5, -4(%rbp)
//对a增加1
addl $1, -4(%rbp)
对a增加1
addl $1, -4(%rbp)
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident"GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609"
.section .note.GNU-stack,"",@progbits
在指令层,其实是可以做到的++(a++)的,只不过是编译器不允许这样做,a++=6=5+1,则没有错,但是++a就会变成++6等价于6=6+1,显然6在指令层可能不是一个内存地址,而是一个常数,所以赋值不上去
看看
{:9_225:}
长见识了{:10_279:}
好棒
{:5_90:}
好文章
算式的运算没看懂:a = 5; ++a++ 等于 ++(a++),也就是++ (5+1) 等于 ++ 6,也就是7吗?
刚刚看了变量名++的解释,更正:++ (a++)相当于++(4+1) ,a为自增后的值
{:5_109:}
表示没看懂
有收获
麻烦能出一个视频讲解一下 这篇文章里面的知识吗???
mark{:5_109:}
懵懵懂懂的
独我雅想 发表于 2017-8-12 19:04
感觉每次小甲鱼出的机试题目我都不会写
同感,我还以为只有我一个不会{:9_234:}
更清晰了一点 ,牛*