逻辑运算符中的 && 和 ||

在c语言中对真假的处理是:

非零是真,用1表示;

零是假,用0表示;


表达式1  &&  表达式2;

当表达式1 和 表达式2 都正确是 才输出1;

若是表达式1 或 表达式2 有一个是假的,就输出0;


先来看两个小程序

#include<stdio.h>

int main()
{
      int i = 3,m;

      m = (3>2) && (i = 4);

      printf("i = %d,m = %d\n",i,m);

      return 0;
}



输出的是:i = 4,   m = 1

#include<stdio.h>

int main()
{
      int i = 3,m;

      m = (2>3) && (i = 4);

      printf("i = %d,m = %d\n",i,m);

      return 0;
}


输出的是:i = 3,m = 0 

这两个程序的区别就是 运算符&&前面的表达式 不同,导致的结果大相径庭;

为什么会这样呢?

由c语言对真假的处理容易理解 m 的值; 至于i的值,前面说过只有当 && 前后的表达式都是正确时才输出1,当编译器 读到 表达式1(2>3)时,如果是错误的,那么编译器就不会继续读 表达式2,因为此时 m 的值已经确定了;所以 i 的值 就是如此。


   至于  ||  运算符和  &&  运算符是同样的道理。

#include<stdio.h>

int main()
{
	int i,m;

	i = 3;

	m = (2<3) || (i = 0);

	printf("i = %d,m = %d\n",i,m);

	return 0;
}


输出的是:i = 3,m = 1

#include<stdio.h>

int main()
{
	int i,m;

	i = 3;

	m = (2>3) || (i = 4);

	printf("i = %d,m = %d\n",i,m);

	return 0;
}


输出的是:i = 4,m = 1

#include<stdio.h>

int main()
{
	int i,m;

	i = 3;

	m = (2>3) || (i = 0);

	printf("i = %d,m = %d\n",i,m);

	return 0;
}


输出的是:i = 0,m = 0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值