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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

移动神器RAX3000M路由器不刷固件变身家庭云之六(高级应用):设置https

本系列文章&#xff1a; 移动神器RAX3000M路由器变身家庭云之一&#xff1a;开通SSH&#xff0c;安装新软件包 移动神器RAX3000M路由器变身家庭云之二&#xff1a;安装vsftpd 移动神器RAX3000M路由器变身家庭云之三&#xff1a;外网访问家庭云 移动神器RAX3000M路由器变身家庭云…

洗地机有必要买吗?2024好用的洗地机推荐

洗地机有必要吗&#xff1f;单答案是肯定的&#xff01;传统的家务劳动真的是耗时又枯燥&#xff0c;特别是地面清洁。要先扫一遍灰&#xff0c;然后用湿拖把先把地面全拖一遍&#xff0c;然后用干拖把把水渍再推一遍&#xff0c;最后还要忍着恶心去清洗拖把&#xff0c;费时费…

全网最全stable diffusion模型讲解!快来!!小白必收藏!!

手把手教你入门绘图超强的AI绘画程序Stable Diffusion&#xff0c;用户只需要输入一段图片的文字描述&#xff0c;即可生成精美的绘画。给大家带来了全新Stable Diffusion保姆级教程资料包&#xff08;文末可获取&#xff09; AI模型最新展现出的图像生成能力远远超出人们的预…

企业机密文件防泄密解决方案(具体执行时间表)

企业的机密文件是其核心竞争力的重要组成部分。一旦机密文件泄露&#xff0c;可能会给企业带来重大的经济损失和声誉损害。因此&#xff0c;企业需要采取有效的措施来保护机密文件的安全性。本文将介绍一种企业机密文件防泄密解决方案&#xff0c;帮助企业提高信息安全防护能力…

CentOS 8 8.5.2111 网络在线安装系统 —— 筑梦之路

之前写过一篇关于centos 8 官方停止更新维护后解决yum源问题的文章&#xff1a; CentOS 8 停止维护后换可用yum源——筑梦之路_http://ftp.iij.ad.jp/pub/linux/centos-vault/8.5.21-CSDN博客 由于centos 8 dvd的镜像比较大&#xff0c;有时候我们根本不需要去下载一个10G以上…

【数据库原理】(9)SQL简介

一.SQL 的发展历史 起源&#xff1a;SQL 起源于 1970 年代&#xff0c;由 IBM 的研究员 Edgar F. Codd 提出的关系模型概念演化而来。初期&#xff1a;Boyce 和 Chamberlin 在 IBM 开发了 SQUARE 语言的原型&#xff0c;后发展成为 SQL。这是为了更好地利用和管理关系数据库。…

iOS 解决push证书不受信任

重新下载&#xff1a;https://www.apple.com/certificateauthority/

手把手带你门SpringCloud

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是平顶山大师&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《手把手带你门SpringCloud开发之入门级及nacos…

在Flyway执行数据库脚本之前创建数据库

Flyway让我们不用手动执行sql脚本&#xff0c;但是众所周知&#xff0c;前提是要先创建项目的数据库。为了能够让运维的同事再偷一次懒&#xff0c;通过代码来自动完成数据库的创建&#xff0c;于是有了这篇文章的分享~ 要实现这个效果&#xff0c;只需要两步&#xff1a; 第一…

【Python机器学习】线性模型——lasso

除了岭回归&#xff0c;还有一种正则化的线性回归是lasso&#xff0c;与岭回归相同&#xff0c;使用lasso也是约束系数使其接近于0&#xff0c;但方法不同&#xff0c;叫做L1正则化。L1正则化的结果是使用lasso时某些系数刚好为0。说明某些特征被模型完全忽略。 同样以波士顿房…

企业防泄密软件超全图文解析!快来看!

防泄密软件作为保障企业信息安全的重要工具&#xff0c;其重要性不言而喻。本文将为您解析企业防泄密软件的方方面面&#xff0c;帮助您了解如何选择适合自己企业的防泄密软件。 一、泄密的渠道有哪些 1、外部入侵&#xff1a;黑客攻击、病毒感染等外部因素可能导致企业的数据…

Vue脚手架及组件开发

组件插槽: 路由数据传递&#xff1a;

ubuntu20.04安装cuda11.7和显卡驱动

1、禁用nouveau sudo vi /etc/modprobe.d/nouveau.conf 在最下面加入blacklist nouveau sudo update-initramfs -u sudo reboot 输入命令&#xff0c;如果没有任何输出&#xff0c;证明禁用成功 lsmod | grep nouveau 2、安装cuda11.7 CUDA Toolkit Archive | NVIDIA Deve…

ubuntu 22 virt-manger(kvm)安装winxp; ubuntu22体验 firebird3.0

安装 、启动 virt-manager sudo apt install virt-manager sudo systemctl start libvirtdsudo virt-manager安装windowsXP 安装过程截图如下 要点1 启用 “包括寿终正寝的操作系统” win_xp.iso 安装过程 &#xff1a; 从winXp.iso启动, 执行完自己重启从硬盘重启&#xff0c…

高压放大器输出接法及其注意事项

高压放大器应用场景非常广泛&#xff0c;非常适用于半导体高压驱动、TFT产业高压驱动、各种高压工程等应用&#xff1b;也很适用当作音频信号产生器或函数波形产生器的波形放大使用。使用场景广泛&#xff0c;放大器的输出接法也多种&#xff0c;对于不同的放大器也有对应的输出…

【漏洞复现】ActiveMQ反序列化漏洞(CVE-2015-5254)

Nx01 产品简介 Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件。ActiveMQ是消息队列服务&#xff0c;是面向消息中间件&#xff08;MOM&#xff09;的最终实现&#xff0c;它为企业消息传递提供高可用、出色性能、可扩展、稳定和安全保障。 Nx02 漏洞描述 Re…

怎么做表单二维码来获取用户数据?扫码填表的制作方法

​怎么用二维码来收集其他人的信息&#xff0c;比如用户反馈、信息采集、问卷调查等等&#xff0c;都是现在表单二维码的常见应用方式。那么如果我们想制作一个表单二维码用来采集其他人员的反馈信息&#xff0c;用二维码生成器来制作的步骤有哪些呢&#xff1f;下面来教大家在…

软件测试|SQL中的null值,该如何理解?

深入理解SQL中的Null值&#xff1a;处理缺失数据的重要概念 简介 Null值在SQL中是用于表示缺失或未知数据的特殊值。本文将深入探讨Null值的概念、处理方法和注意事项&#xff0c;以帮助读者更好地理解和处理SQL中的缺失数据。 在SQL数据库中&#xff0c;Null值是一种特殊的…

linux虚拟机网络不通,如何配置ip解决网络问题

续接前文 Hyper-V创建linux虚拟机&#xff0c;共享wifi网络-CSDN博客 创建虚拟机后&#xff0c;网络都正常&#xff0c;可以使用&#xff0c;今天的一次异常关机后&#xff08;电源不小心拔掉了&#xff09;&#xff0c;再次打开这个虚拟机&#xff0c;网络都失效了。。。。 …

轻松获取CHATGPT API:免费、无验证、带实例

免费获取和使用ChatGPT API的方法 快速开始&#xff1a;视频教程 章节一&#xff1a;GPT-API-Free开源项目介绍 GPT-API-Free 是一个开源项目&#xff0c;它提供了一个中转API KEY&#xff0c;使用户能够调用多个GPT模型&#xff0c;包括gpt-3.5-turbo、embedding和gpt-4。这…