标题:关于const char * a ,表示*a的值不能改变。我不理解的是*a>>1;是在哪里改变 ...
只看楼主
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
看看匯編麽,以下是那一行代碼的匯編結果:

程序代码:
; 8    :     printf("a>>1 to is = %x\n",(*a) >> 1);

    mov    eax, DWORD PTR _a$[ebp]
    movsx    ecx, BYTE PTR [eax]
    sar    ecx, 1
    mov    esi, esp
    push    ecx
    push    OFFSET ??_C@_0BB@EPOBIAHI@a?$DO?$DO1?5to?5is?5?$DN?5?$CFx?6?$AA@
    call    DWORD PTR __imp__printf
    add    esp, 8
    cmp    esi, esp
    call    __RTC_CheckEsp


授人以渔,不授人以鱼。
2014-01-03 13:46
夏天天蓝
Rank: 2
等 级:论坛游民
帖 子:39
专家分:86
注 册:2013-12-30
得分:0 
汇编停留在大学应付考试水平,所以版主的代码啃不动
2014-01-03 14:27
lleon
Rank: 2
等 级:论坛游民
帖 子:25
专家分:43
注 册:2013-10-28
得分:0 
临时变量通常丢在寄存器里
2014-01-03 17:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-426066-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 2.443414 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved