魔法虫虫 发表于 2018-5-6 16:24:34

差一点就懂了

x420520 发表于 2018-7-9 22:15:36

先看看 有点坑居然要10个鱼币

一定是红豆味 发表于 2018-8-2 15:30:58

还可以

冬阳阳 发表于 2018-8-8 13:06:42

鱼哥,出现左值错误,是因为把常量当作变量用了么?

zhudesheng 发表于 2018-9-5 07:15:01

没看懂的,我瞎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在指令层可能不是一个内存地址,而是一个常数,所以赋值不上去

辑或 发表于 2018-10-5 12:06:00

看看

whdd 发表于 2018-10-7 16:45:21

{:9_225:}

矢月 发表于 2018-10-8 16:17:52

长见识了{:10_279:}

Julia999 发表于 2018-11-10 20:52:18

好棒

紫轩aa 发表于 2018-11-14 17:58:42

{:5_90:}

Julia999 发表于 2018-11-20 09:26:12

好文章

SINOSMG 发表于 2018-11-21 14:05:10

算式的运算没看懂:a = 5; ++a++ 等于 ++(a++),也就是++ (5+1) 等于 ++ 6,也就是7吗?

SINOSMG 发表于 2018-11-21 14:22:49

刚刚看了变量名++的解释,更正:++ (a++)相当于++(4+1) ,a为自增后的值
{:5_109:}

cjh123 发表于 2018-12-12 18:14:44

表示没看懂

大显666 发表于 2019-1-12 12:05:15

有收获

wangjievibeke 发表于 2019-2-2 02:51:02

麻烦能出一个视频讲解一下 这篇文章里面的知识吗???

wlps2006 发表于 2019-2-24 11:59:50

mark{:5_109:}

15579618832 发表于 2019-4-23 20:41:02

懵懵懂懂的

15579618832 发表于 2019-4-23 20:42:41

独我雅想 发表于 2017-8-12 19:04
感觉每次小甲鱼出的机试题目我都不会写

同感,我还以为只有我一个不会{:9_234:}

大同先生 发表于 2019-4-30 09:33:21

更清晰了一点 ,牛*
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: 什么是 lvalue,什么是 rvalue?