当前位置: 首页 > news >正文

C#,入门教程(09)——运算符的基础知识

上一篇:

C#,入门教程(08)——基本数据类型及使用的基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/123906998

一、算术运算符号

算术运算符号包括:四则运算 加+ , 减-, 乘*, 除/与取模%

// 加法,运算
int va = 1 + 2;
int vb = va + 3;
int vc = va + vb;// 加法运算,还可以用于将两个或更多字符串(或变量)连接起来
string sa = "Hello";
string sb = "World";
string sc = sa + " " + sb;// 特殊情况!字符串与数字连接起来(数字自动转为字符串)
string sd = sa + va;// 减法,运算
int ga = 1 - 2;
int gb = ga - 3;
int gc = ga - gb;// 乘法,运算
int fa = 1 * 2;
int fb = fa * 3;
int fc = fa * fb;// 除法,运算
int ka = 300 / 2;
int kb = ka / 30;
int kc = ka / kb;// 取模计算
int ya = 10 % 3;// (点到为止)
// 四则运算符号如果被重载,可以用于 矩阵 等高等级数据集合的运算
// 比如下面三个矩阵 mA,mB,mC 的乘法关系;
Matrix mC = mA * mB;

使用禁忌!

(1)乘法,就需要注意结果是否会超过值范围。

         特别情况可以先转为 double 计算,最后再归整。

(2)所有的除法语句之前,一定要加上 除0的检查!

int b = F(20);
int c = 100;// 错误!
int a = c / b;// 准确!
if ( b != 0) 
{a = c / b;
}// 如果 d 是浮点数,则应该这样写
double d = G(2.0);
if ( Math.Abs(d) > float.Epsilon )
{a = c / d;
}

又:

没有运算符重载是 Go 语言的最大败笔,远离了数学,就远离了精华。

没有大括号是 python 语言的最大败笔,远离了代码的可维护性,就远离了可靠性。

二、逻辑运算

计算机的逻辑,只有三种情况:与,或,非。

1、与AND,两个条件均满足;

比如:a >0 AND a<10 用代码表示就是:

(a>0) && (a<10)

2、或or,两个之一满足;

比如:a <0 OR a>10, 用代码表示就是:

(a>0) || (a<10)

3、非not,不满足;

比如: not a>0;用代码表示就是:

 !(a>0)

这其实很别扭。建议:能不用 !就不用!

使用禁忌:

再简单的逻辑,也用括号括起来!无论是老手或新人,这个错误经常出现!而且不好找!

// 错误
a>0 && a<10// 错误,需要两个&
(a>0) & (a<10)// 正确
(a>0) && (a<10)

这里面还有一个维护性的问题,30年编程老牛给出的一点良心建议。

// 通常写法
// 不好维护,容易出错!
if ( a > 11 && b < 22) 
{;
}// 稍微好点
if ( (a > 11) && (b < 22)) 
{;
}// 好的写法
if ( a > 11 ) 
{if ( b < 22 ) {;}
}

三、比较运算符

1、等于==

==     表示两边表达式运算的结果相等,注意是两个等号

int a = 10;
int b = 11;if ( a == b ) dosomething();
if ( a != b ) dosomething();
if ( a > b ) dosomething();
if ( a < b ) dosomething();
if ( a >= b ) dosomething();
if ( a <= b ) dosomething();// 如果是两个浮点数的 等于
double c;
double d;
// 错误!!!!!!!!!!!!!!!
if ( c == d )
{;
}
// 正确!!!!!!!!!!!!!!!!
if ( Math.Abs(c-d) <= float.Epsilon ) 
{;
}

2、不等于!=

!=    表示两边表达式运算的结果不相等;

3、大于>

>    表示左边表达式的值大于右边表达式的值;

4、小于<

<    表示左边表达式的值小于右边表达式的值;

5、大于等于>= 

>=    表示左边表达式的值大于等于右边表达式的值;

6、小于等于<=

<=     表示左边表达式的值小于等于右边表达式的值;
 

四、按位运算

按位运算是从 C/C++ 继承过来的运算符号。

如果

如果你是

如果你是初学者,可以放弃后面的内容啦;

如果你尚未到达一定的水平,可以先飘过!

1、按位与&    

按位与。两个运算数都为 1,则整个表达式为 1,否则为 0;也可以对布尔型的值进行比较,相当于“与”运算,但不是短路运算。


2、按位或|    

按位或。两个运算数都为 0,则整个表达式为 0,否则为 1;也可以对布尔型的值进行比较,相当于“或”运算,但不是短路运算。

3、按位非~    

按位非。当被运算的值为 1 时,运算结果为 0;当被运算的值为 0 时,运算结果为 1。该操作符不能用于布尔型。对正整数取反,则在原来的数上加 1,然后取负数;对负整数取反,则在原来的数上加 1,然后取绝对值。

4、按位异或^    

按位异或。只有运算的两位不同结果才为 1,否则为 0。

5、左移<<    

左移。把运算符左边的操作数向左移动运算符右边指定的位数,右边因移动空出的部分 补 0。

6、有符号右移>>    

有符号右移。把运算符左边的操作数向右移动运算符右边指定的位数。如果是正值,左侧因移动空出的部分补 0;如果是负值,左侧因移动空出的部分补 1。

7、无符号右移>>>     

无符号右移。和 >> 的移动方式一样,只是不管正负,因移动空出的部分都补 0。

五、C#运算符的禁忌与忠告

1、尽可能多的 ()

你完全不需要学习任何的运算符优先级知识,不要依靠编译器解决运算符优先级问题,务必直接用 ( ) 来确定表达式的层次(优先级)、范围。

// 不好
double a = b + c * d / e - g;// 好
double a = b + (c * d) / e - g;

2、尽量不用多个 && || ! 

可以用多层次的判别代替多个逻辑条件,组合越多,错误越多!

下一篇:

C#,入门教程(10)——常量、变量与命名规则的基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/123913570

相关文章:

C#,入门教程(09)——运算符的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(08)——基本数据类型及使用的基础知识https://blog.csdn.net/beijinghorn/article/details/123906998 一、算术运算符号 算术运算符号包括&#xff1a;四则运算 加 , 减-, 乘*, 除/与取模%。 // 加法&#xff0c;运算 int va 1 …...

企业出海数据合规:GDPR中的个人数据与非个人数据之区分

GDPR仅适用于个人数据&#xff0c;这意味着非个人数据不在其适用范围内。因此&#xff0c;个人数据的定义是一个至关重要的因素&#xff0c;因为它决定了处理数据的实体是否要遵守该法规对数据控制者规定的各种义务。尽管如此&#xff0c;什么是个人数据仍然是当前数据保护制度…...

如何在Ubuntu搭建Emlog博客站点并发布至公网可随时远程访问管理界面——“cpolar内网穿透”

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…...

【金猿CIO展】是石科技CIO侯建业:算力产业赋能,促进数字经济建设

‍ 侯建业 本文由是石科技CIO侯建业撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 是石科技&#xff08;江苏&#xff09;有限公司成立于2021年&#xff0c;由国家超级计算无锡中心与…...

TypeScript 类

目录 1、实例 2、创建类的数据成员 3、创建实例化对象 4、完整实例 5、类的继承 6、继承类的方法重写 7、static关键字 8、instanceof运算符 9、访问控制修饰符 10、类和接口 TypeScript 是面向对象的 JavaScript。类描述了所创建的对象共同的属性和方法。支持面向对…...

Oracle分区表

文章目录 A. varchar2类型时间字段(20240102)分区实战1. 表要不要分区2. 将已经存在的表改造为分区表(时间字段&#xff0c;varchar2类型)3. 增加分区3.1 增加分区3.2 置换分区&#xff0c;不会复制索引&#xff0c;不要用这种语法建表&#xff0c;这是专门为置换分区用的3.3 分…...

【leetcode】力扣算法之旋转图像【难度中等】

题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 用例 输入&#xff1a; matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&…...

【Java集合类篇】HashMap的数据结构是怎样的?

HashMap的数据结构是怎样的? ✔️HashMap的数据结构✔️ 数组✔️ 链表 ✔️HashMap的数据结构 在Java中&#xff0c;保存数据有两种比较简单的数据结构: 数组和链表&#xff08;或红黑树&#xff09;。 HashMap是 Java 中常用的数据结构&#xff0c;它实现了 Map 接口。Has…...

Spring 应用合并之路(一):摸石头过河 | 京东云技术团队

公司在推进降本增效&#xff0c;在尝试多种手段之后&#xff0c;发现应用太多&#xff0c;每个应用都做跨机房容灾部署&#xff0c;则最少需要 4 台机器&#xff08;称为容器更合适&#xff09;。那么&#xff0c;将相近应用做一个合并&#xff0c;减少维护项目&#xff0c;提高…...

Android13配置selinux让system应用可读sys,proc,SN号

system权限应用读sys,proc目录及SN号 Android13预置的system应用&#xff0c;需要读/sys, /proc目录&#xff0c;读(SN)serial number号, 需要修改selinux配置&#xff0c;否则会报avc错&#xff0e; 其修改方法会比Android11复杂一些&#xff0e; 实现 system_app.te中添加…...

防勒索病毒攻击的关键措施

【作者】朱向东 中原银行 高级工程师 在当今数字化时代&#xff0c;勒索病毒成为了企业和个人面临的一项严峻威胁。勒索病毒攻击可以导致数据丢失、系统瘫痪以及经济损失。为了保护自己和组织的利益&#xff0c;采取一系列的防范措施是至关重要的。下面是一些关键的措施&#…...

代表团坐车 - 华为OD统一考试

OD统一考试(B卷) 分值: 100分 题解: Java / Python / C++ 题目描述 某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案输出方案数量。 约束: 一个团只能上一辆车,并且代表团…...

运用Jmeter进行登录测试

开始了解Jmeter,写篇关于Jmeter的博客做备忘,这里以苏宁易购网站的登录请求为例实战来说明测试计划元件,创建一个 Web 测试计划。 今天简单介绍Jemeter的入门,Jmeter 的安装这边就跳过,直接讲述如何使用JMETER,如何运用Jmeter进行测试。 a.下载jmeter软件 b.安装…...

Docker学习与应用(四)-容器数据卷

1、容器数据卷 1&#xff09;什么是容器数据卷 docker的理念回顾 将应用和环境打包成一个镜像&#xff01; 数据&#xff1f;如果数据都在容器中&#xff0c;那么我们容器删除&#xff0c;数据就会丢失&#xff01;需求&#xff1a;数据可以持久化 MySQL&#xff0c;容器删…...

CentOS 7.6下HTTP隧道代理的安全性考虑

在CentOS 7.6上配置HTTP隧道代理时&#xff0c;安全性是一个不可忽视的重要因素。以下是对HTTP隧道代理安全性的一些关键考虑因素&#xff1a; 1. 加密和数据安全 使用强加密算法&#xff1a;确保您使用的是经过广泛认可和强化的加密算法&#xff0c;如AES-256-GCM。数据完整…...

Mockito+junit5搞定单元测试

目录 一、简介1.1 单元测试的特点1.2 Mock类框架的使用场景1.3 常见的Mock框架1.3.1 Mockito1.3.2 EasyMock1.3.3 PowerMock1.3.4 Testable1.3.5 比较 二、Mockito的使用2.1 导入pom文件2.2 mock对象和spy对象2.3 初始化mock/spy对象的方式2.4 参数匹配2.5 方法插桩2.6 InjectM…...

PostgreSQL获取当天、昨天、本月、上个月、本年、去年的数据

gps_time为timestamp类型日期字段 获取当天的数据 WHERE DATE_TRUNC(day, gps_time) CURRENT_DATE --或 WHERE DATE(gps_time) CURRENT_DATE获取昨天的数据 WHERE DATE_TRUNC(day, gps_time) CURRENT_DATE - INTERVAL 1 day获取本月的数据 WHERE DATE_TRUNC(month, gps_…...

XCTF:stage1[WriteUP]

从题目中下载到图片&#xff1a; 考虑图片是png&#xff0c;隐写方式有可能是高宽修改&#xff0c;也可能是色相隐藏&#xff0c;色彩通道位隐藏等等 使用stegsolve对图片进行一下伽马、颜色转换 在图片的左上角就显示出了一个二维码 使用QR_Rresearch工具对二维码扫描 获得一…...

STM32CubeMX教程13 ADC - 单通道转换

目录 1、准备材料 2、实验目标 3、ADC概述 4、实验流程 4.0、前提知识 4.1、CubeMX相关配置 4.1.1、时钟树配置 4.1.2、外设参数配置 4.1.3、外设中断配置 4.2、生成代码 4.2.1、外设初始化调用流程 4.2.2、外设中断调用流程 4.2.3、添加其他必要代码 5、常用函数…...

矩阵的乘法

首先矩阵的乘法定义如下&#xff1a; #include <stdio.h> int main() { int i 0; int j 0; int arr[20][20] { 0 }; int str[20][20] { 0 }; int s[20][20] { 0 }; int n1 0; int n2 0; int m2 0; int z 0; int m1 0;…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…...