逻辑运算符

"&&"运算符:当左边所给表达式或变量为0时,不再计算右侧,整个表达式为零。

//&&
void Function(int a,int b,int c)
{
	if(a > 1 && b > 1 && c > 1)
	{
		printf("ok\n");
	}
	else
	{
		printf("Error");
	}	
	
//0040B518   cmp         dword ptr [ebp+8],1			参数a和1比较
//0040B51C   jle         Function+39h (0040b539)		a小于等于1则跳转到0040b539(else),下面的不执行
//0040B51E   cmp         dword ptr [ebp+0Ch],1			若ebp+8(a)大于1则继续执行参数b和1比较
//0040B522   jle         Function+39h (0040b539)		b小于等于1则跳转到0040b539(else),下面的不执行
//0040B524   cmp         dword ptr [ebp+10h],1			若ebp+0c(b)大于1则继续执行参数c和1比较
//0040B528   jle         Function+39h (0040b539)		c小于等于1则跳转到0040b539(else),下面的不执行
//0040B52A   push        offset string "ok\n" (0041f10c)
//0040B52F   call        printf (0040b780)
//0040B534   add         esp,4
//0040B537   jmp         Function+46h (0040b546)
//0040B539   push        offset string "Error" (0041f130)
//0040B53E   call        printf (0040b780)
//0040B543   add         esp,4

}
只有所有条件都成立时才会继续执行语句

"||"运算符:两个或多个布尔值中任何一个值为TRUE(或者都为TRUE),则返回值为TRUE。如果多个运算符都是FALSE,则返回值为FALSE。

void Function(int a, int b, int c)
{
	if(a > 1 || b > 1 || c > 1)
	{
		printf("ok\n");
	}

//0040B518   cmp         dword ptr [ebp+8],1			参数a与1比较
//0040B51C   jg          Function+2Ah (0040b52a)		若a大于1则跳转到40b52a(执行部分),若不成立顺序执行
//0040B51E   cmp         dword ptr [ebp+0Ch],1			a小于等于1时继续用参数b和1比较
//0040B522   jg          Function+2Ah (0040b52a)		若B大于1则跳转到40b52a,不成立继续执行
//0040B524   cmp         dword ptr [ebp+10h],1			b小于等于1时继续c和1比较
//0040B528   jle         Function+37h (0040b537)		若C不成立,则直接跳过执行部分
//0040B52A   push        offset string "ok\n" (0041f10c)
//0040B52F   call        printf (0040b780)
//0040B534   add         esp,4

}

“!“运算符:
" !0” 这个逻辑表达式的值为1.(判断的这个数为0,成立,则其表达式的值为1)
" !1” 这个逻辑表达式的值为0.(判断的这个数非0,不成立,则其表达式的值为0)

void Function()
{
	int a = 1;
	if(!a)
	{
		printf("ok");
	}
	else
	{
		printf("Error");
	}
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值