C语言编程3:运算符,运算符的基本用法

news2024/12/28 19:25:37

C语言3🔥:运算符,运算符的基本用法

一、运算符🌿

🎇1.1 定义

运算符是指进行运算的动作,比如加法运算符"+“,减法运算符”-"

算子是指参与运算的,这个值可能是常数,也可能是变量,还可能是一个方法的返回值

🎇1.2 单目运算符

只有一个算子的运算符: +,-

例如-a,-b,+a,+b

常用的单目运算符:

+正值
-负值
逻辑反
&取地址
sizeof操作数的类型长度(计算的是变量/类型所占空间的大小,单位是字节)
~对一个数的二进制按位取反
(类型)强制类型转换

🎇1.3 双目运算符

  • 我们已知,只有一个算子的运算符是单目运算符

  • 那么, 有两个算子的运算符就是双目运算符

  • 如:a+bb-a

  • 那么,有三个算子的运算符就是三目运算符

🎇1.4 赋值运算符

赋值(=) 也是运算,也有结果

举个栗子

a=6的结果是a被赋予的值,也就是6

a=b=6在计算机中可以看成是:a = (b=6),也就是,先把6赋给b(此时b的值就是6),然后再把b的值(6)赋给a,所以a的值也是6

= += -= *= /= &= ^= I= >>= <<=

用法:

a+=3 相当于:a=a+3

a-=6 相当于:a=a-6

代码示例如下:


#include <stdio.h>

int main()
{
    int a=6,b=6;                  //初始化
    
    a+=3;                         //计算
    b=b+3;
    
    printf("a=%d,b=%d\n",a,b);     //输出运算结果
     
    return 0;
}

运行结果:


a=9,b=9

解析: a+=3 相当于 a=a+3,把a=6的值代入得:a=6+3 a的值:9

🎇1.5 运算符优先级

🎇1.6 算数运算符(特别重要)

+加法运算符
-减法运算符
*乘法运算符
/除法运算符
%取余运算符
/ 的用法:
int a,b,c,d,e,f,g;

a=5/2;
b=12345/10000;
c=12345/1000;
d=12345/100;
e=12345/10;

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

运行结果:


a=2
b=1
c=12
d=123
e=1234

解析

a=5/2

5/2=2.5,由于a是整型(int),整形不包含小数部分,在计算时会把小数部分全部舍弃,所以a=5/2中a的结果是2

b=12345/10000 与e=12345/10 (我的想法:12345/10000,除数有几个零,被除数就舍弃几位数,如12345/10000,除数有4个零,那么被除数就舍弃后面四位数,所以答案就是:1)

由于b与e是整型(int),整形不包含小数部分,在计算时会把小数部分全部舍弃

所以b的值为1,e的值为1234。

% (取余) 的用法:
int a,b,c,d,e;

a=1%3;
b=1%2;
c=30%90;
d=12345%10000;
e=12345%10;

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

运行结果


a=1
b=1
c=30
d=2345
e=5

解析:

a=1%3,c=30%90的解析如右 ,1向3取余,1除以3余1。同上30%90=30

1%2 1向2取余 1除以2=0.5,由于是int类型会舍弃小数,所以1/2的值只能是0,所以原来的除数1,还会留下了,所以1%2=1

d=12345%10000,e=12345%10

所以12345除以10000的余数就是:2345,12345除以10,余5

所以 :d=12345%10000=2345,e=12345%10=5

🎇1.7 关系运算符

“==”判断相等
“!=”不等于
“>”大于
“<”小于
“>=”大于等于
“<=”小于等于

关系运算符的结果:判断如果结果是 true(真) 则为 1

判断如果结果是 false(假)则为 0

用法:
int a=7,b=3,c;

a==b        //的值是0,因为a不等于b,所以是false(假),所以值是0
a!=b        //的值是1,a不等于b,判断正确,所以是true(真),所以值是1

🎇1.8 逻辑运算符

逻辑运算是对逻辑量进行的运算,结果只有0或者1

逻辑量关系运算逻辑运算的结果

用代码表示: a大于等于1,小于等于6

a>=1 && a<=6;

逻辑优先级

! > && > ||

短路:
  1. 逻辑运算是自左向右进行的,如果左边的结果已经能够决定结果了,就不会做右边的计算了

  2. 对于&&,左边是false时就不会做右边的运算了

  3. 对于||,左边是true时就不会做右边的运算了

  4. 不要把赋值,包括复合赋值组合进表达式

总体优先级排名:
优先级运算符结合性
1()从左到右
2!± ++ –从右到左(单目的+和-)
3- / %从左到右
4+ -从左到右
5< <= > >=从左到右
6== !=从左到右
7&&从左到右
8
9= += -= *= /= %=从右到左

🎇1.9 位运算符

“&”按位与
“I”按位或
“<<”左移
“>>”右移

🎇1.10 条件运算符:

? : ;

如:


int count=30;

count = (count>20)?count-10:count+10;

意思是如果条件满足,count如果>20;则count-10,否则就是执行count+10

也就是说:当count>20是 真(非零或1) 的时候执行前者,是 假(0) 执行后者

优先级:条件运算符的优先级高于赋值运算符,但是低于**其他运算符

🎇1.11 逗号运算符

逗号用来连接两个表达式,并以其右边的表达式的值作为它的结果。逗号的优先级是所有运算符中最低的,所以它两边的表达式会先计算;逗号的组合关系是自左向右,所以左边的表达式会先计算,而右边的表达式的就留下来作为逗号运算的结果

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

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

相关文章

Apache Spark分布式计算框架架构介绍

目录 一、概述 二、Apache Spark架构组件栈 2.1 概述 2.2 架构图 2.3 架构分层组件说明 2.3.1 支持数据源 2.3.2 调度运行模式 2.3.3 Spark Core核心 2.3.3.1 基础设施 2.3.3.2 存储系统 2.3.3.3 调度系统 2.3.3.4 计算引擎 2.3.4 生态组件 2.3.4.1 Spark SQL 2.…

三菱PLC 实现PID控制温度 手搓PID指令!!!

目录 1.前言 2.PID公式的讲解 3.程序 4.硬件介绍 5.EPLAN图纸 6.成果展示 7.结语 1.前言 新手想要学习PLC的PID控制 首先会被大串的PID 公式吓到 PID公式有很多种&#xff1a;基本PID 位置式 增量式 模拟式 理想型 等等 但是 不要急 别看这么多公式 其实 将公式拆…

如何通过ip地址判断网络类别

在计算机网络中&#xff0c;IP地址不仅是设备在网络中的唯一标识&#xff0c;同时也隐含了网络类别的信息。了解如何根据IP地址判断网络类别&#xff0c;对于网络管理员、系统工程师以及网络爱好者来说都是一项基本技能。本文将详细介绍如何通过IP地址判断网络类别。 一、IP地址…

普中51单片机:矩阵按键扫描与应用详解(五)

文章目录 引言电路图开发板IO连接矩阵键盘的工作原理行列扫描逐行/逐列扫描 LCD1602代码库代码演示——暴力扫描代码演示——数码管(行列式)代码演示——线翻转法代码演示——LCD1602密码锁 引言 矩阵按键是一种通过行列交叉连接的按键阵列&#xff0c;可以有效地减少单片机I/…

LibreOffice的国内镜像安装地址和node.js国内快速下载网站

文章目录 1、LibreOffice1.1、LibreOffice在application-conf.yml中的配置2、node.js 1、LibreOffice 国内镜像包网址&#xff1a;https://mirrors.cloud.tencent.com/libreoffice/libreoffice/ 1.1、LibreOffice在application-conf.yml中的配置 jodconverter:local:enable…

代谢组数据分析一:代谢组数据准备

介绍 该数据集是来自于Zeybel 2022年发布的文章_Multiomics Analysis Reveals the Impact of Microbiota on Host Metabolism in Hepatic Steatosis_ [@zeybel2022multiomics],它包含了多种组学数据,如: 微生物组(粪便和口腔) 宿主人体学指标 宿主临床学指标 宿主血浆代谢…

C语言之数据在内存中的存储(1),整形与大小端字节序

目录 前言 一、整形数据在内存中的存储 二、大小端字节序 三、大小端字节序的判断 四、字符型数据在内存中的存储 总结 前言 本文主要讲述整型包括字符型是如何在内存中存储的&#xff0c;涉及到大小端字节序这一概念&#xff0c;还有如何判断大小端&#xff0c;希望对大…

大语言模型的直接偏好优化(DPO)对齐在PAI-QuickStart实践

直接偏好优化&#xff08;Direct Preference Optimization&#xff0c;DPO)算法是大语言模型对齐的经典算法之一&#xff0c;它巧妙地将奖励模型&#xff08;Reward Model&#xff09;训练和强化学习&#xff08;RL&#xff09;两个步骤合并成了一个&#xff0c;使得训练更加快…

Python 基础知识:为什么使用 __init__.py ?

大家好&#xff01;今天&#xff0c;我们将深入了解 Python 中的 __init__.py 文件&#xff0c;这个小文件却能干大事。让我们抛开任何专业术语&#xff0c;直接进入正题。 什么是 __init__.py &#xff1f; 假设你有一个 Python 目录&#xff0c;里面有一堆 Python 文件&…

vue3【实战】语义化首页布局

技术要点&#xff0c;详见注释 <script setup></script><template><div class"page"><header>页头</header><nav>导航</nav><!-- 主体内容 --><main class"row"><aside>左侧边栏<s…

JavaDS —— 顺序表ArrayList

顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。在数组上完成数据的增删查改。在物理和逻辑上都是连续的。 模拟实现 下面是我们要自己模拟实现的方法&#xff1a; 首先我们要创建一个顺序表&#xff0c;顺序表…

C++初探究

概述 C可以追溯到1979年&#xff0c;C之父Bjarne Stroustrup在在使用C语言研发工作时发现C语言的不足&#xff0c;并想要将其改进&#xff0c;到1983年&#xff0c;Bjarne Stroustrup在C语言的基础上添加了面向对象编程的特性&#xff0c;设计出了C的雏形。 网址推荐 C官方文…

C++继承(一文说懂)

目录 一&#xff1a; &#x1f525;继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 二&#xff1a;&#x1f525;基类和派生类对象赋值转换三&#xff1a;&#x1f525;继承中的作用域四&#xff1a;&a…

太多项会毁了回归

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 多项式回归的过度拟合及其避免方法 通过添加现有特征的幂&#xff0c;多项式回归可以帮助你充分利用数据集。它允许我们甚至使用简…

Java学习高级二

Java是单继承的 Object类 方法重写 Java子类访问 – 就近原则 子类构造器的特点 多态 Java–final

【豆包AI】北京春田知韵

看到有国内AI上线了&#xff0c;网络信息那么多&#xff0c;我该怎么找它的官网呢&#xff1f; 找官方网站3步 1百度 关于抖音豆包的网站是哪个?【www.doubao.com】 豆包属于哪个公司&#xff1f;【北京春田知韵科技有限公司】 www.doubao.com 2查询备案号 PC版本的安装…

理解算法复杂度:时间复杂度详解

引言 在计算机科学中&#xff0c;算法复杂度是衡量算法效率的重要指标。时间复杂度和空间复杂度是算法复杂度的两个主要方面。在这篇博客中&#xff0c;我们将深入探讨时间复杂度&#xff0c;了解其定义、常见类型以及如何进行分析。 什么是时间复杂度&#xff1f; 时间复杂度…

论文《Generalizable Adversarial Attacks Using Generative Models》笔记

【DAGAER】传统的攻击方法依赖于约束优化范式&#xff0c;具有局限性&#xff0c;例如经典的Nettack攻击方法。本文提出了一个统一的白盒对抗攻击生成框架&#xff0c;该方法学习了目标域的深度生成模型&#xff0c;不是在原始输入空间中生成对抗性例子&#xff0c;而是学习在一…

elk在宝塔中的简单部署和使用

ELK是什么&#xff1f;了解elk “ELK” 是 Elasticsearch、Logstash 和 Kibana 三个开源软件的首字母缩写。这三个软件一起常被称为 “ELK Stack” 或 “Elastic Stack”。它们主要用于日志管理和分析&#xff0c;提供了强大的数据搜索、分析和可视化功能。 Elasticsearch&am…

C++初阶学习第一弹——入门学习C++

目录 1.什么是C 2.C关键字 3.命名空间 3.1命名空间的定义 3.2命名空间的使用 1、加命名空间名称及作用域限定符 2、使用 using 将命名空间中某个成员引入 3.使用using namespace 命名空间名称 引入 4.C输入&输出 5.缺省参数 5.1 缺省参数概念 5.2缺省参数分类 6. …