小编bar*_*lpy的帖子

x ++和++ x不能在c中留下值(左值)?

偶尔,我一直在问一个有趣的问题:x++++x不能留在C值?很多人告诉我这++x不可能因为++ x的汇编代码没有返回寄存器.我对此表示怀疑.所以我做了一些实验.

c代码:

#include <stdio.h>

int main()
{
    int a = 1;
    a++ = 10; 
    ++a = 10; 
    return a;
}
Run Code Online (Sandbox Code Playgroud)

gcc编译错误:

./test.c:6: invalid lvalue in assignment
./test.c:7: invalid lvalue in assignment
Run Code Online (Sandbox Code Playgroud)

更改代码和程序集:

int a = 1;
int b = a++; 
int c = ++a; 
Run Code Online (Sandbox Code Playgroud)

汇编代码:

0x08048400 <main+0>:    push   %ebp
0x08048401 <main+1>:    mov    %esp,%ebp
0x08048403 <main+3>:    sub    $0x18,%esp
0x08048406 <main+6>:    movl   $0x1,-0x4(%ebp)
0x0804840d <main+13>:   mov    -0x4(%ebp),%eax
0x08048410 <main+16>:   mov    %eax,-0x8(%ebp)
0x08048413 <main+19>:   incl   -0x4(%ebp) …
Run Code Online (Sandbox Code Playgroud)

c c++

0
推荐指数
1
解决办法
424
查看次数

标签 统计

c ×1

c++ ×1