&&逻辑运算符的汇编代码

今天去参加了一个笔试,考试的语言是C语言.下面是一个题目的内容,大致是这样的.

#include <stdio.h>

int main( int argc, char *argv[] )
{
	int a = 7;
	int b = 10;

	int c = 19;
	c = a && b;

	printf( "%d.\n", c );
}

问的是这个打印多少,以前一直没有关心过&&表达式的值.只知道当a如果是0的时候,会直接返回假,假是0.那当a不是0,那就的看b是不是真,如果是真,那会返回什么呢?真是纠结.知道会返回真,那真到底是多少?是1还是b的值,最后我填了b的值.回来反汇编之后,发现其实这些代码的反汇编代码是这样的.实际会定义一个0和1,作为返回值.

#include <stdio.h>

int main( int argc, char *argv[] )
{
00411390  push        ebp  
00411391  mov         ebp,esp 
00411393  sub         esp,0E8h 
00411399  push        ebx  
0041139A  push        esi  
0041139B  push        edi  
0041139C  lea         edi,[ebp-0E8h] 
004113A2  mov         ecx,3Ah 
004113A7  mov         eax,0CCCCCCCCh 
004113AC  rep stos    dword ptr es:[edi] 
	int a = 7;
004113AE  mov         dword ptr [a],7 
	int b = 10;
004113B5  mov         dword ptr [b],
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值