首页 > 其他分享 >逻辑操作符

逻辑操作符

时间:2024-06-30 18:56:10浏览次数:22  
标签:逻辑 后置 ++ 初始值 int 操作符 &&

目录

&& --- 逻辑与操作符

|| --- 逻辑或操作符 


&& --- 逻辑与操作符

逻辑与操作符有并且的意思,一般用于判断语句中

逻辑与操作符运行规则是都要为真,才会继续执行或计算

360笔试题:

有关前置++(--),后置++(--)的知识请见:单目操作符-CSDN博客

#include<stdio.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;

	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);

	return 0;
}

代码分析:a++ && ++b && d++

a++:a初始值为0,后置++,先计算后++,0为假,那么&& ++b && d++就不会计算

所以结果为:a = 1,b = 2,c = 3,d = 4

代码验证:

得出结论:逻辑与操作符左边为假,右边就不会计算 


将a的初始值更改为1,会有怎样的结果?

#include<stdio.h>
int main()
{
	int i = 0, a = 1, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;

	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);

	return 0;
}

代码分析:a++ && ++b && d++

a++:a初始值为1,后置++,1为真(一切非0都为真),所以要计算 && ++b

a++ && ++b:a后置++后为2,b初始值为2,前置++后为3,a++ && ++b整体的结果同样为真,在C语言中,真的固定值为1,所以&& d++也要计算

a++ && ++b && d++:d初始值为4,后置++,执行完此表达式后为5

所以结果为:a = 2,b = 3,c = 3,d = 5

代码验证:


|| --- 逻辑或操作符 

逻辑或操作符有或者的意思,只要有一个表达式为真即可

相关代码题:

#include<stdio.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ || ++b || d++;

	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);

	return 0;
}

代码分析:a++ || ++b || d++

a++:a初始值为0,后置++,逻辑与只要有一个为真即可,所以要判断 || ++b是否为真

a++ || ++b:a后置++后为1,b初始值为2,前置++后为3,|| ++b为真,所以 || d++就不会计算

所以结果为:a = 1,b = 3,c = 3,d = 4

代码验证: 

得出结论:逻辑或操作符左边为真,右边不再计算 


将a的初始值更改为1,会有怎样的结果?

#include<stdio.h>
int main()
{
	int i = 0, a = 1, b = 2, c = 3, d = 4;
	i = a++ || ++b || d++;

	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);

	return 0;
}

代码分析:

a++:a初始值为1,后置++,a为真,那么|| ++b || d++都不会计算,表达式结束后a为2

所以结果为:a = 2,b = 2,c = 3,d = 4

代码验证:

标签:逻辑,后置,++,初始值,int,操作符,&&
From: https://blog.csdn.net/weixin_55341642/article/details/140080480

相关文章

  • HDLBits练习Shift18 Verilog逻辑右移和算数右移的区别
    算术右移时,移入的是移位寄存器中数字(本例中为q[63])的符号位,而不是逻辑右移时的零。右移n位,即加入n位符号位。即若符号位为1,在左边补1;若符号位为0,就补0。算术右移的另一种思路是,它假定被移位的数字是带符号的,并保留符号,因此算术右移是右移n位将带符号的数字除以2的n次幂。......
  • C++ 面向对象高级开发 5、操作符重载与临时对象
    C++里面操作符就是一种函数。 任何成员函数都有一个this->pointer谁调用这个函数,就指向谁。      tempobject(临时对象)typename(); 没有名称即是临时对象。一般人少用,但标准库用的很多。   质疑精神,即使是标准库也有可以提高的地方。 ......
  • 数据结构/排序/堆排序 --- 逻辑讲解、代码实现、图形展示
    一、总体逻辑:    1.写一个交换的函数swap备用    2.写一个维护堆的性质的函数heapify备用    3.数组-> 堆(不明白的别急,后面会详细解释)    4.维护整个堆(看不懂别急别急别急)    5.堆顶和堆底的最后一个元素互换(不明......
  • C语言中操作符详解(二)
    OK,今天继续为诸君带来有关C语言中操作符的讲解一.位操作符 C语言中的位操作符我相信大家并不陌生,我们在之前就已经接触过了一些位操作符(位操作符的操作数只能是整数):(1)&:按位与(同为1才为1,否则为0)(2)| :按位或(有1就为1)(3)^:按位异或(不同为1,否则为0)(4)~:按位......
  • 创新实训(八)——题目相关的逻辑处理解释
    题目部分题目是整个OJ系统的练习基础,无论是平时学生的练习还是比赛时的准备用题,题目系统在OJ中都是至关重要的。在controllers文件夹下,负责题目部分的代码文件分别为:problem_set.php,problem.php,problem_statistics.php,problem_data_manage.php,problem_statement_manage.php,p......
  • 初阶《操作符详解》 3. 移位操作符
    3.移位操作符<< 左移操作符>> 右移操作符注:移动的是二进制位,移位操作符的操作数只能是整数。一个存储的二进制码分原码、反码、补码1.十进制数据的二进制表现形式就是原码,原码最左边的一个数字就是符号位,0为正,1为负。2.正的整数的原码、反码、补码相同3.负的......
  • 创新实训(七)——比赛(Contest)内部逻辑处理
    比赛部分比赛部分包含比赛列表显示、单个比赛内部信息显示、比赛管理、比赛人员以及比赛报名页面这五个代码主要代码文件。此外在内部逻辑处理时还使用了model和lib下的部分配置代码比赛列表比赛列表包含“正在进行或即将到来的比赛”和“已结束的比赛”这两部分具体代码实现......
  • 【C语言】带你玩转“操作符”(上)
    目录 1. 操作符的分类   2.  原码、反码、补码   3. 移位操作符  3.1 左移操作符3.2 右移操作符   4. 位操作符:&、|、^、~   5. 单目操作符   6. 逗号表达式   最近准备期末考试,好久不见啦,现在回归——正文开始......
  • 数据宽度,逻辑运算
    一、数据宽度数据宽度指的是在计算机中表示数据时所占用的内存空间大小,它决定了数据在内存中的表示范围和精度。数据宽度通常以位(bit)或字节(Byte)为单位来衡量,不同的数据类型有不同的宽度要求。在计算机科学中,数据宽度是一个基本概念,它涉及到如何有效地在内存中存储和处理数据。位......
  • caddy 模块(module) caddyhttp Start启动逻辑分析
     ./modules/caddyhttp/app.gofunc(app*App)Start()error{//xx} Start方法属于一个自定义的App结构体,用于启动应用程序中的多个HTTP服务器实例。下面是对该方法的主要逻辑和关键步骤的详细分析:1.日志设置:首先,通过zap.NewStdLogAt创建一个兼容......