第七章:C语言的操作符

news2024/11/26 2:03:52

       说起操作符大家都不陌生,从我们最初的 +  -  c   *  /  加减乘除,到更加深奥的操作符,而今天我要有完整的系统来理清楚C语言的操作符到底有什么,和它们相关的用法,话不多说,直接走进今天的主题----C语言的操作符。

 一:算数运算符

+      -      *      /     %(取模)

这里不细讲加减乘,加减乘和数学是一样的,这里只谈   /   %。

 二:移位操作符

<< (左移操作符)  >>  (右移操作符)---移动是二进制哟(移的是补码)(在32比特位下移动)

 有些编译器不支持移动负数,移动后不改变自身

三:位操作符 (计算的是二进制) 

&  (相同为 1 即为 1 ,有 0 则为 0 )

|   (有 1 则为 1 ,两个相同时则为0)

^    (相同为 0 ,相异为 1 )

①  &  |   ^ 计算

#include<stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	int x1, x2, x3;
	// a 的二进制 00000000 00000000 00000000 00000001
	// b 的二进制 00000000 00000000 00000000 00000010

	x1 = a & b;
	// a  的二进制 00000000 00000000 00000000 00000001
	// b  的二进制 00000000 00000000 00000000 00000010
	// x1 的二进制 00000000 00000000 00000000 00000000
	x2 = a | b;
	// a  的二进制 00000000 00000000 00000000 00000001
	// b  的二进制 00000000 00000000 00000000 00000010
	// x2 的二进制 00000000 00000000 00000000 00000011
	x3 = a ^ b;
	// a  的二进制 00000000 00000000 00000000 00000001
	// b  的二进制 00000000 00000000 00000000 00000010
	// x3 的二进制 00000000 00000000 00000000 00000011
	//x1 = 0,x2 = 3,x3 = 3
	printf("x1 = %d,x2 = %d,x3 = %d\n", x1, x2, x3);
	return 0;
}

②不能创建变量(第三个变量),实现两个数的交换

#include<stdio.h>

//方法一:
//int main()
//{
//	int a = 1;
//	int b = 2;
//	a = a + b;
//	b = a - b;
//	a = a - b;
//	printf("a = %d,b = %d\n", a, b);
//	return 0;
//}
//当数字很大时就合适了

//方法二:
int main()
{
	int a = 1;
	int b = 2;
	a = a ^ b;  
	b = a ^ b; //看成 b = ( a ^ b ) ^ b,这里 b 和 b就可以消除
	a = a ^ b; //这里其实就变成 a = ( a ^ b ) ^ a,这里 a 和 a就可以消除
	printf("a = %d,b = %d\n", a, b);
	return 0;
}

四:赋值操作符( = )

+=     -=     *=      /=     %=     >>=    <<=     &=     |=       ^=(复合赋值符)

#include<stdio.h>
int main()
{
	float weight = 55.5f;//加 f 的目的使区分double
	double high = 1.78;
	int age = 18;

	return 0;
}

//记住 C语言的 = 和 == 是两码事
// a =  1  赋值运算符
// a == 1 是判断 a 是否等于1

五:单目操作符

 

 六:关系操作符

>              >=             <           <=           !=          ==

这里记住          a =  1  赋值运算符            a == 1 是判断 a 是否等于1

七:逻辑操作符

&& (并且的意思)                                 ||  (或者的意思)

 

#include<stdio.h>

//int main()
//{
//	int a = 0;
//	int b = 0;
//	if (a == 0 && b == 0)
//	{
//		printf("hehe\n");
//	}
//	else
//	{
//		printf("haha\n");
//	}
//	return 0;
//}
//打印出hehe

int main()
{
	int a = 0;
	int b = 0;
	if (a == 0 || b == 1)
	{
		printf("hehe\n");
	}
	else
	{
		printf("haha\n");
	}
	return 0;
}
//打印出hehe

八:条件操作符

(   语句 1      ?  (语句 2 :语句 3)) 如果语句1为真就执行语句2,否则执行语句3

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 1;
	int c = a > b ? a : b;
	//如果 a 大于 b 就把 a 的值赋给 c,否则就把 b 的赋给 c
	printf("%d\n", c);
	return 0;
}
//打印出:1

九:逗号表达式

逗号表达式,就是用逗号隔开的多个表达式。

逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

#include<stdio.h>

int main()
{
	int a = 1;
	int b = 2;
	int c = (a > b, a = b + 10, a, b = a + 1);
	//这里 a > b 没有什么关系,a = b + 10 = 2 + 10 = 12
	//这里 a 没有什么关系,b = a + 1 = 12 + 1
	//最后 c = b
	printf("%d\n", c);//打印出:13
	return 0;
}

十:下标引用(已讲),函数调用(已讲)和结构体成员

下标引用:[  ] 

函数调用:函数名();

结构体成员:  .    ->(这里不细讲,后面会详细介绍)

关于操作符的优先级图片

        不知不觉就到了尾声呢,咱们第六章的知识点就到这里了啦,作为小白的我,可能写的不是很好,不对的地方还请大佬大佬指点指点。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保护个人隐私和数据安全的方法与策略

引言 随着信息技术的普及和发展&#xff0c;我们享受到了便捷的互联网服务&#xff0c;但与此同时&#xff0c;个人隐私和数据安全问题也日益受到威胁。在这个所谓的"裸奔"时代&#xff0c;网络攻击、数据泄露和隐私侵犯已经成为常态。然而&#xff0c;我们并不无助…

sysfs文件系统

sysfs系统介绍 sysfs系统sysfs系统是什么&#xff1f;koject的内核对象模型基础kobject结构体定义kest bus如何管理driver和devicebus_type 结构体 小知识什么是挂载mount命令 &#x1f4cc;————本章重点————&#x1f4cc; &#x1f517;了解sysfs系统概念; &#x1f5…

布谷鸟hash算法的并行化实现(一)

由于本人最近在写一个项目&#xff0c;为了实现数据查找以及数据修改部分的快速操作&#xff0c;所以采用hash对数据进行存储&#xff0c;而在此过程中接触到了布谷鸟hash&#xff0c;觉得这个hash算法还是很有意思并且高效&#xff0c;所以想着进行一些记录&#xff0c;本系列…

一文带你快速掌握如何读懂 YonBuilder移动开发 的项目源码

本文将通过四大步的简单讲述&#xff0c;让新手开发者朋友们快速掌握阅读YonBuilder移动开发项目源码的技巧方法。 1.读懂代码的第一步&#xff0c;了解项目的整体文件结构 CSS: 存放css样式的文件&#xff1b; feature&#xff1a;猜测是用来存放特征文件的&#xff0c;实际…

了解投影坐标系统,并在精美的地图上探索

投影坐标系简介 地球椭球体表面也是个曲面&#xff0c;而我们日常生活中的地图及量测空间通常是二维平面&#xff0c;因此在地图制图和线性量测时首先要考虑把曲面转化成平面。由于球面上任何一点的位置是用地理坐标&#xff08;λ&#xff0c;φ&#xff09;表示的&#xff0…

计算机三级网络技术总结(更新中)

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f35f;欢迎来到前端初见的博文&#xff0c;本文主要讲解我计算机三级网络技术&#x1f35f; &#x1f468;‍&#x1f527; 个人主页 : 前端初见 &#x1f95e;喜欢的朋友可以关注一下&#…

BEV专栏(二)从BEVFormer看BEV流程(下篇)

前言 书接上回&#xff0c;在上一篇文章中&#xff0c;我们介绍了BEVFormer这一先进的BEV算法。在本篇文章中&#xff0c;我们将深入探讨BEVFormer的实现细节&#xff0c;旨在帮助读者更深入地理解BEVFormer的工作原理和性能表现。 本教程禁止转载。同时&#xff0c;本教程来自…

【maven】自定义构建maven的jar包依赖

前言 自己定义自己的maven的jar包依赖&#xff0c;本地版本。 实现 pom.xml pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSche…

车载软件架构——闲聊几句AUTOSAR BSW(五)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我们并不必要为了和谐,而时刻保持通情达理;我们需要具备的是,偶尔有肚量欣然承认在某些方面我们可能会有些不可理喻。该有主见的时候能掷地有声地镇得住场…

车载基础软件——基础软件验证平台(网络管理和诊断)

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 我们并不必要为了和谐&#xff0c;而时刻保持通情达理&#xff1b;我们需要具备的是&#xff0c;偶尔有肚量欣然承…

部署packstack及问题总结

目录 一、部署packstack 1.1 简介 1.2 性能搭配 1.3 准备工作 1.4 安装 二、出现的问题 2.1 安装中断临时文件 2.2 提示某个安装包出错 2.3 leatherman版本太高 三、安装成功 一、部署packstack 1.1 简介 对于openstack初学者而言&#xff0c;传统部署openstack流程…

MQ-rabbitMQ_基础篇

MQ-rabbitMQ_基础篇 1.MQ1.1什么是MQ1,2应用 2.常见消息中间件协议&#xff08;模型&#xff09;2.1JMS模型&#xff08;协议&#xff09;2.2AMQP协议 3.RabbitMQ3.1六种工作模式3.1.1Hello Word简单模式3.1.2word queues 工作队列能者多劳 3.1.3Publish/Subscribe 发布与订阅模…

在SwissTargetsPrediction数据库中预测成分靶点

1.对筛选的多肽成分进行靶点预测&#xff1a; ①用Uniport中的蛋白进行一系列操作&#xff08;水解&#xff0c;挑选2~8短肽&#xff0c;活性预测&#xff0c;毒性&#xff0c;过敏性预测&#xff0c;胃肠吸收度&#xff0c;半衰期和苦味的预测、生物活性功能预测&#xff09;…

mybatis连接池源码分析

文章目录 前言一、PooledDataSourceFactory二、获取连接三、归还连接 前言 其实大部分连接池的代码都大同小异&#xff0c;总体获取连接&#xff0c;归还连接逻辑大都相同。希望通过阅读本文章&#xff0c;能给你带来帮助。 测试用例 public void testMybatis()throws Excepti…

深入篇【C++】类与对象:运算符重载详解

深入篇【C】类与对象&#xff1a;运算符重载详解 ⏰一.运算符重载&#x1f553;1.<运算符重载&#x1f550;2.>运算符重载&#x1f552;3.运算符重载&#x1f551;4.运算符重载①.格式1.改进12.改进2 ②.默认成员函数1.功能2.不足 &#x1f553;5.<运算符重载&#x1…

学内核之十九:Linux文件系统结构大蓝图

目录 一&#xff1a;参考资料 二&#xff1a;整理的原因及基本原则 三&#xff1a;Linux文件系统大蓝图 四&#xff1a;补充说明 一&#xff1a;参考资料 博主梳理的关于文件系统的基础知识&#xff1a; 7.5 文件系统_定义_龙赤子的博客-CSDN博客 博主转载的关于page cac…

深入理解深度学习——正则化(Regularization):参数范数惩罚

分类目录&#xff1a;《深入理解深度学习》总目录 正则化在深度学习的出现前就已经被使用了数十年。线性模型&#xff0c;如线性回归和逻辑回归可以使用简单、直接、有效的正则化策略。许多正则化方法通过对目标函数 J J J添加一个参数范数惩罚 Ω ( θ ) \Omega(\theta) Ω(θ…

三、Neo4j 源码研究系列 - 持久化

version: v-2023051401 author: 路__ 说到数据库&#xff0c;那么离不开的模块就是持久化&#xff08;Persistence&#xff09;&#xff0c;数据持久化是数据库不可缺少的重要组成模块之一。可以说一个数据库少了持久化功能&#xff0c;可以说这个数据库就不足以称为数据库。…

并查集:解密算法面试中的常客

文章目录 1. 并查集原理&#x1f351; 举例说明&#x1f351; 并查集的应用 2. 并查集实现&#x1f351; 接口总览&#x1f351; 构造函数&#x1f351; 查询操作&#x1f345; 代码实现 &#x1f351; 合并操作&#x1f345; 动图演示&#x1f345; 代码实现 &#x1f351; 判…

Linux文件打开函数open()

#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> int main(void) {int fd -1; /*这个整数用来存放文件描述符*/char filename[] "good.txt"; /*打开的文件名&#xff0c;是一个字符数组…