C#基础——运算符

举报
AI浩 发表于 2021/12/22 23:26:27 2021/12/22
【摘要】 常用的运算符合:+,-,*,/,%,空连接运算符  算术运算符 一元运算符:++,-- int i = 10;  int j = --i;  int k = j++; 结果:i=9; j=10; k=9;...
  1. 常用的运算符合:+,-,*,/,%,空连接运算符
            1.  算术运算符
              1. 一元运算符:++,--

int i = 10;  int j = --i;  int k = j++; 结果:i=9; j=10; k=9;

              1. 二元运算符:+,-,*,/,%

10/3 = 3;  10%3=1;   10%4=2;  10%5=0;

            1. 逻辑运算符:返回类型永远是布尔类型
              1. 一元运算符:取非(!)

bool b = true;  bool r = !b; 结果: ràfalse;

              1. 二元运算符:条件与(&&),条件或(||)

条件与符号的两边都是true的时候,整个表达式是true,只要有一个为false,则整个表达式为false

   if ((5 > 3) && (7 > 4))

   {

      //会执行语句

}

条件或(||)符号的两边都是false的时候,整个表达式是false,只要有一个为true,则整个表达式为true

  if ((5 > 3) || (4 > 7))

   {

      //会执行语句

}

            1. 字符串运算符(+)

string str = “zhang” + “san”;//str = “zhangsan”;

            1. 比较运算符:==,!= ,> ,>=,<,<=
              1. 判断是否相等:==。如:判断3和5是否相等: 3==5
              2. 判断是否不等:!=。如:判断3和5是否不等: 3!=5
              3. 判断是否大于>:如:判断3是否大于5: 3>5
              4. 判断是否大于等于>=:如:判断3是否大于等于5: 3>=5
              5. 判断是否小于<:如:判断3是否小于5: 3<5
              6. 判断是否小于等于<=:如:判断3是否小于等于5: 3<=5

注: double类型的数值和int类型的数值作比较是否相等时,不能用==,例:double  类型的5,可能是5.0001或者4.9999999,所以做比较不能用==,应该写成

double x=5; int y=5; if(Math.Abs(x-y)<1E-6){//相等}

            1. 赋值运算符:=,+=,-=,/=,*=,%=
              1. 给变量赋值:= 如:int age = 10;
              2. 先加再赋值:+= 如:age +=5; àage = age + 5;
              3. -=,/=,*=,%=的算法和上面的一样。
            2. 三元运算符:?:规则:判断?前面的表达式是否为真(true):若是,则返回:前面的那个数据,否则返回:后面的数据。简单的说,就是个if..else语句。

int c = (10 > 9)?7:6;

            1. Checked和unChecked运算符

例: byte b=255;b++; Console.WriteLine(b.ToString());当加上Checked时,byte b=255;  Checked{b++;} Console.WriteLine(b.ToString());注:用Checked编辑器选项进行编译,就可以检查所有未标记代码中的溢出,如果把一段代码块标记为checked,CLR就会执行益处检查,如果溢出就跑出OverflowException异常。如果要禁止检查,则可以把代码标记为unchecked。例: byte b=255;

Unchecked{b++;} Console.WriteLine(b.ToString());这样写就不会抛出异常,但会丢失数据,因为byte类型不能包含256,溢出位会丢失,所以b变量的得到的值是0。

注:  unChecked是默认行为。只有需要把几行未检查的代码放在一段显式标记为Checked的打代码中,才需要显式地使用unChecked关键字。

            1. is运算符

is运算符可以检查对象是否与特定的类型兼容。加绒表示对象或者该类型或者派生类型。例:要价差变量是否与Object理性兼容可使用线面的代码”

 int i=10; if ( i is object ){ Console.WriteLine(“ I is an object”);}

注:int和所有的数据类型一样,也从object继承而来;表达式 i is object将为true,并显示相应的消息。

            1. as运算符

            as运算符用于执行引用类型的显示类型转换的类型,与指定的类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回null值。

例:

 Object  o1=”Some String”;

 Object  o2=5;

String s1=o1 as string;//输出结果:s1=”Some String”;

String s2=02 as String;//输出结果:s2=null;

as运算符允许在一步中进行安全的类型转换,不需要先使用is运算符测试类型,再执行转换。

            1. Sizeof运算符

使用Sizeof运算符可以确定栈中值类型需要的长度(单位是字节)。例:

Console.WriteLine(sizeof(int));

其结果显示数字4,因为int有4个字节。如果对于复杂类型(和非基元类型)使用sizeof运算符,就需要把代码放在unsafe块中。例:

Unsafe{Console.WriteLine(sizeof(Customer));}

            1. Typeof运算符

     Typeof运算符表示一个特定类型的System.Type对象。例:typeof(String)返回表示System.String类型的Type对象,在使用反射技术动态查找对象的相关信息时,这个运算符很有用。

            1. 可空类型和运算符

可空类型与一元或二元运算符一起使用时,如果其中一个操作数或者两个操作数都是null,结果就是null。例:

int? a=null; int? b=a+4; //b的结果为null;

int? c =a*5; //c的结果为null

但是在比较可空类型时,只要一个操作数是null,比较结果就是false。既不能因为一个条件是false,就认为 对立面是true。例:

int? a=null;

if (a>=b) {Console.WriteLine(“a>=b”);}

else{Console.WriteLine(“a<b”);}  //结果:a<b

            1. 空连接运算符:??规则:判断其前面的数据是否为空(null),若不是整个表达式为其前面的数据,否则为其后面的数据。这个运算符发觉在两个操作数之间,第一个操作数是一个可空类型或引用类型;第二个操作数必须与第一个操作数的类型相同,或者可以隐含的转换成第一个操作数的类型。空合并运算符的计算如下:如果第一个操作数不是null,整个表达式就等于第一个操作数的值。如果第一个操作数是null整个表达式就等于第二个操作数的值。

int? a = 10;  int? b = null;  int? c = a??b;

注:如果一二个操作数不能隐含的转换为第一个操作数的类型,就会编译报错。

备注:如果想让那两个数据先运行,则用小括号()括起来。

     一个经典的两个变量值交换:a=(a+b)-(b=a);

练习题:

     1、比较|和||有什么不同? &和&& 有什么不同?

          |算数或  例:A|B 对 A ,B都进行判断。

          || 逻辑或。只有当A为假的时候才会对B进行判断。若A为真,则不继续对B进行判断。

          | &  会报所有条件判断完。

          ||  && 顺序判断,当不满足时,直接结束。

          程序举例:

class Program

    {

        static void Main(string[] args)

        {

 

输出结果:

6

4

            int i = 3, j = 3;

 

            if (i++ > 2 | i++ > 3 | i++ > 4)

                Console.WriteLine(i);

            if (j++ > 2 || j++ > 3 || j++ > 4)

                Console.WriteLine(j);

        }

    }              

文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。

原文链接:wanghao.blog.csdn.net/article/details/105276964

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。