首页 > 其他分享 >C语言中的逻辑操作符

C语言中的逻辑操作符

时间:2023-07-26 23:13:09浏览次数:33  
标签:逻辑 操作数 month 运算符 操作符 && C语言 表达式

C语言中的逻辑操作符

逻辑操作符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符。

  • !:逻辑取反运算符(改变单个表达式的真假)。
  • &&:与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
  • ||:或运算符,就是或者的意思(两侧至少有一个表达式为真,则为真,否则为假)。

注:C语⾔中,⾮0表⽰真,0表⽰假

1.1 逻辑取反运算符

比如,我们有一个变量叫flag,如果我们flag为假,要做一个什么事情,就可以这样写代码:

if(flag)
{
    printf("do something\n")
}

1.2 与运算符

&&就是与运算符,也是并且的意思,&&是一个双目操作符,使用的方式是a&&b,&&两边的表达式都是真的时候,整个表达式才为真,只要有一个是假,则整个表达式为假。

比如:我们说月份是3月到5月,是春天,那使用代码怎么体现呢?

#include <stdio.h>

int main()
{
	printf("请输入一个1-12的整数:");
	int month = 0;
	scanf("%d", &month);
	if (month >= 3 && month <= 5)
	{
		printf("春季\n");
	}
	return 0;
}

这里的意思就是month既要大于等于3,又要小于等于5,必须同时满足。

1.3 或运算符

||就是或运算符,也就是或者的意思,||也是一个双目操作符,使用的方式是a||b||两边的表达式只要有一个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

比如:我们说一年中月份为12月或者1月或者2月是冬天,那么我们怎么使用代码体现呢?

#include <stdio.h>

int main()
{
	printf("请输入一个1到12的月份整数:");
	int month = 0;
	scanf("%d", &month);
	if (month == 12 || month == 1 || month == 2)
	{
		printf("冬季\n");
	}
	return 0;

}

1.4 闰年的判断

输入一个年入year,判断year是否为闰年。
判断规则:

1.能被4整除斌且不能被100整除的是闰年;
2.能被400整除的是闰年。

#include <stdio.h>

int main()
{
	printf("请输入年份:");
	int year = 0;
	scanf("%d", &year);
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
	{
		printf("是闰年");
	}
	else
	{
		printf("不是闰年");
	}
	return 0;
}

1.5 短路

C语言逻辑运算符还有一个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为"短路"。

如前面的代码:

if(month >= 3 && month <=5)

表达式中&&的左操作数是month>=3,右操作数是month <=5,当左操作数month>=3的结果是0的时候,即使不判断month <=5 ,整个表达式的结果也是0(不是春季)。

所以,对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执行。

对于||操作符是怎么样呢?我们结合前面的代码:

if(month == 12 || month == 1 || month == 2)

如果month == 12,则不再判断month是否等于1或者2,整个表达式的结果也是1(是冬季)。

所以,||操作符的左操作数的结果不为0时,就无需执行右操作数。

像这种仅仅根据左操作数的结果就能知道整个表达式的结果i,不再对右操作数进行计算的运算称为短路求值

标签:逻辑,操作数,month,运算符,操作符,&&,C语言,表达式
From: https://www.cnblogs.com/bjx2020/p/17583757.html

相关文章

  • C语言基础
    主函数1.1main函数main函数参数一共有三个:1.intargc整型变量2.char*argv[]字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串3.char*envp[]字符串数组intmain(void)//无参数形式{return0;}intmain(intargc,char*argv[])//带形式参数{return0;}C语言程......
  • c语言学习9
    一、字符串字符:人能看得懂的符号或图案,在内存中以整数形式存储,根据ASCII码表中的对应关系显示出相应的符号或图案'\0'0空字符'0'48'A'65'a'97串:是一种数据结构,存储类型相同的若干个数据对于串型结构的处理是批量性的,会从头开始直到遇到结束标志......
  • 基于C语言的P2P软件实现
    完整资料进入【数字空间】查看——搜索"writebug"摘要Peer-to-Peer网络毫无疑问是当今的热点技术主题。Napster和Gnutella的广泛使用证明了peer-to-peer应用的强大潜力。P2P(或者说peer-to-peer)网络是一种基于操作上下文的网络模型,任何一个节点都同时作为客户机和服务器。J......
  • 基于boost服务器逻辑层设计
    服务器架构设计通常的Session(会话层)  Asio底层的通信过程,如下图实际服务器结优化的架构如下具体逻辑可以查看:  https://llfc.club/category?catid=225RaiVNI8pFDD5L4m807g7ZwmF#!aid/2QbUASZ5jV8jgKYFngRHrG8pu7z代码如下:const.h#pragmaonce#defineMAX_LENGT......
  • WEB漏洞—逻辑越权之找回机制及接口安全
    #找回重置机制客户端回显,Response状态值,验证码爆破,找回流程绕过等#接口调用乱用短信轰炸,来电轰炸等1. 找回重置机制---同过验证码确定你是不是找回账号的主人,可能出现逻辑问题---客户端回显(验证码在客户端或者浏览器里面可以看到)---Response状态值(有回复的状态值如0/1,我......
  • 全选 和 不能全选 测试题 逻辑代码
    全选和不能全选测试题逻辑代码关于测试题会出现三种情况1.可以全选的点击就加入选中数组里面2.不可以全选的先点击可以多选的再点击不能多选的会选中数组情况3.不可以全选的先点击不能全选的再点击可以全选的不能全选的那个被取消可以全选的一个个添加......
  • WEB漏洞—逻辑越权之登录脆弱及逻辑篡改
    由于这里涉及的所有靶场都无法安装或调试失败。。所以没法做分析,记录了一些课堂上的笔记,大部分是关于修改商品信息之类的,思路理解,但实战基本不行 #登录应用功能点安全问题检测功能点,检测,危害,修复方案等1.登录点暴力破解2.HTTP/HTTPS传输3.Cookie脆弱点验证4.Session固定点......
  • day10 10.1 C语言基础之编译器安装
    【一】学习C语言的原因一般公司的apk基于Java实现的加密jadx反编译java,分析代码NB公司的的apk,基于Java+C语言实现加密(JNI开发)加密一般使用C语言开发,在安卓项目中使用Java调用C语言开发的动态链接库文件jadx反编译java,分析代码看不到加密ida反编译c语言,分析代码......
  • C语言之函数
    函数一个c语言项目只能有一个main函数函数是什么?函数是一段可重复使用的代码块,用于执行特定的任务。它接受输入参数,执行一系列操作,并返回一个值。在C语言中,函数由函数头和函数体组成。函数头包含函数的返回类型、函数名和参数列表。函数体包含函数的具体实现代码。通过调......
  • C语言分支与循环(8)--- 练习题(1)
    一.练习1.编写一段代码计算n的阶乘提示:如5的阶乘就是5*4*3*2*1以此类推例如以下代码:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<windows.h>intmain(void){ intn; intret=1; printf("请输入n的值:"); scanf("%d",&n); for(inti=1;i<......