C#的比较运算

C#中定义的比较操作符有:

●==等于

●!=不等于

●<小于

●>大于

●<=小于或等于

●>=大于或等于

整数与实数

对于整数类型和实数类型,这六种比较操作符都可以适用。根据IEEE 754标准,比较运算符符合下面的规则:

●如果有一个操作数为NaN(空)那么除“!=”之外所有操作符结果为false,“!=”的运算结果为“true”。对于任何两个操作数“x!=y”部等价于“!(x==y)”。可是当一个或两个操作数为NaN(空)时,“<,>,<=,”和“>=”操作符的结果和其相反操作符的逻辑非的结果是不同的。如,x或y为NaN,则x<y总是false的,但是!(x==y)为true。

●两个操作数不是NaN时,操作符根据下列顺序:

-∞<-max<...<-min<-0.0==+0.0<+min<...<+max<+∞

(其中min和max分别是指浮点格式所能表示的最小和最大的有限值)。

注意:在C#中:

●正零和负零被认为是相等的。

●负无穷被认为小于其它任何值,只是等于另一个负无穷。

●正无穷被认为大于其它任何值,只是等于另一个正无穷。

布尔类型

对于布尔类型的比较操作符实际上只有两种:

bool operator==(bool x,bool y);

bool operator!=(bool x,bool y);

如果x和y都为true或false,则“==”的结果为true,否则为false。

相反的,如果x和y都为true或false,则“!=”的结果为false,否则结果为true。当操作数为bool类型时,“!=”操作符和^操作符有相等的结果。

枚举类型

每一种枚举类型隐式地提供下列预比较操作符。

bool operator==(E x,E y);

bool operator!=(E x,E y);

bool operator<(E x,E y);

bool operator>(E x,E y);

bool operator<=(E x,E y);

bool operator>=(E x,E y);

执行“x op y”的结果,这里x和y是一个枚举类型E,其基类为U的表达式,op表示比较操作符,其等价于((U)x) op ((U)y),即枚举类型比较操作符简单地比较两个操作数的基类型值。

引用类型

预定义引用类型等价操作符有:

bool operator==(object x,object y);

bool operator!=(object x,object y);

该操作符返回两个引用类型是否等价的结果。

字符串

预定义字符串等价操作符有:

bool operator==(string x,string y);

bool operator!=(string x,string y);

下列条件之一成立则认为两个字符串值相等:

●两个字符串值都为null;

●两个字符串是字符串长度相同、对应的字符序列也相同的非空字符串。

注意:字符串等价操作符比较的是两个字符串的值,而不是字符串引用。当两个单独的字符串实例含有相同的字符串序列,则认为这两个字符串的值相等。引用类型等价操作符可以用于比较两个字符串引用,不是比较两个字符串的值。

代表类型

每一个代表类型隐式地提供下列预定义比较操作符:

bool operator==(System.Delegate x,D y);

bool operator==(D x,System.Delegate y);

bool operator!=(System.Delegate x,D y);

bool operator!=(D x,System.Delegate y);

时间: 2024-12-06 04:40:19

C#的比较运算的相关文章

Verilog有符号数运算

在数字电路中,出于应用的需要,我们可以使用无符号数,即包括0及整数的集合:也可以使用有符号数,即包括0和正负数的集合.在更加复杂的系统中,也许这两种类型的数,我们都会用到. 有符号数通常以2的补码形式来表示.图1列出了4位二进制表示法所对应正负数.进一步观察,我们发现两种类型数的加减法是一样的,做加法和减法就是 在数轮上按正时钟转转或按反时钟转.比方说,1001+0100,意味着从1001按照顺时钟方向移动4个位置,其结果为1101.在无符号数类型中,它 代表(+9)+(+4)=+13:而在有符

C# And 逻辑“与”运算示例

  C# And 逻辑"与"运算示例,声明两个整形变量和一个bool类型的变量,然后进行相应的逻辑"与"运算,并输出结果,初学C#的逻辑判断时要了解的内容: view sourceprint?01using System; 02using System.Collections.Generic; 03using System.Linq; 04using System.Text; 05namespace LogicAnd 06{ 07 class Program 08

C#实现数组元素的交集和并集运算

编写一个类实现数组元素的交集和并集运算 要求:       1.要有构造函数对数组初始化       2.包含交集和并集两个单独的方法       3.要有一个打印数组元素的方法       4.编写一个测试类测试数组       5.要求控制台中要分别输出两个原数组以及将交集和并集运算结果输出 代码: using System;  using System.Collections.Generic;  using System.Text;  namespace ConsoleApplicatio

集算器协助java处理结构化文本的集合运算

JAVA不直接支持集合运算,因此要用嵌套循环才能实现文本文件之间的交集.并集.差集 等集合运算,如果文件数量较多,或者文件较大而无法放入内存直接计算,再或者要按照多个字段进行集合运算,则相应的代码会更加复杂.集算器直接支持集合运 算,可以协助JAVA轻松实现此类算法,下面我们通过例子来看一下具体作法. 有两个小文件:f1.txt和f2.txt,第一行是列名,现在需要对文件中的Name字段进行交集运算.部分数据如下: 文件f1.txt: 文件f2.txt: 集算器代码: A1.B1:用import

c语言-我写的是两个数的加减运算,以字符串数组形式保存

问题描述 我写的是两个数的加减运算,以字符串数组形式保存 #include #include void main(void) { char str1[30]={0}; char str2[30]={0}; char str3[30]={0}; printf("Please input the first number:"); gets(str1); printf("Please input the second number:"); gets(str3); add(

Excel工作表中使用模拟运算表的方法

  Excel工作表中使用模拟运算表的方法          1.创建一个新的Excel工作表,并在工作表输入数据.在B9单元格中输入提成金额的计算公式"=$B$2*$B$3",如图1所示. 图1 创建工作表并输入公式 2.在B10:B23单元格区域中输入提成比率,然后选择用于创建模拟运算表的单元格B9:I23,在"数据"选项卡的"数据工具"组中单击"模拟分析"按钮,在打开的下拉列表中选择"模拟运算表"选项

寄存器位运算的与或问题

问题描述 寄存器位运算的与或问题 #define GPIO_BASE (0x7F008000)#define rGPACON (*(volatile unsigned *)(GPIO_BASE+0x00))rGPACON = (rGPACON & ~(0xff<<0)) | (0x22<<0); 对這个有点小蒙:1.~(0xff<<0) = ?2.GPIO_BASE+0x00 0x7F008000 + 0x00是32位的:0111 1110 0000 0000

数组中求乘积-JAVA中二维数组的函数运算

问题描述 JAVA中二维数组的函数运算 for(i=0;i<MAX;i++){ for(j=0;j<MAX;j++){ d[i][j]=0; for(k=0;k<MAX;k++) d[i][j]+=a[i][k]*b[k][j]; } } 就是在这个程序中为什么最后的乘积是 for(k=0;k<MAX;k++) d[i][j]+=a[i][k]*b[k][j];

[经典面试题]位运算操作

[LeetCode]136.Single Numbe [LeetCode]201.Bitwise AND of Numbers Range [剑指Offer]40.数组中只出现一次的数字 一道位运算的算法题

link中类似C++的流运算是怎么实现的?能不能实现字符串输出流?

问题描述 link中类似C++的流运算是怎么实现的?能不能实现字符串输出流? link中类似C++的流运算是怎么实现的?能不能实现字符串输出流? 解决方案 http://kb.cnblogs.com/page/42581/