运算符之算术运算符、关系运算符、逻辑运算符、复合赋值运算符、其他运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C# 有丰富的内置运算符,分类如下:
算术运算符
关系运算符
逻辑运算符
复合赋值运算符
位运算符
其他运算符
运算符优先级(由高到低)

类别运算符结合性
后缀()[]->.++--从左到右
一元=-!~ ++ -- (type)* & sizeof从右到左
乘除* / %从左到右
加减+ -从左到右
移位<<  >>从左到右
关系< <= > >=从左到右
相等==         !=从左到右
位与AND&从左到右
位异或XOR

^

从左到右
位或OR|从左到右
逻辑与AND&&从左到右
逻辑或OR||从左到右
条件?:从右到左

一、算术运算符

算术运算符又分为一元运算符和二元运算符。

一元:++、--:对于向加加或者减减这样只需要一个操作数就能完成的运算,称为一元运算符。

二元:*、/、%、+、-、=:对于这些需要两个或以上才能完成运算操作符,称为二元运算符。

运算符描述
+加运算符
-减运算符
++增量运算符
--减量运算符
*乘法运算符
/除法运算符
%余数运算符
=赋值运算符

=赋值运算符

int a = 10;//将10赋值给整形a变量

bool b = true;//将true赋值给布尔b变量

+加运算符

int a = 5;

int b = 12;

int c = a + b;

Console.WriteLine(c);//输出结果:17

-运算符

int a = 19;

int b = 12;

int c = a - b;

Console.WriteLine(c);//输出结果:7

*乘法运算符

int a = 5;

int b = 10;

int c = a * b;

Console.WriteLine(c);//输出结果:50

/除法运算符

int a = 10;

int b = 5;

int c = a / b;

Console.WriteLine(c);//输出结果:2

Console.WriteLine(b/a);//输出结果:0

double ab = 2.2;

Console.WriteLine(ab / 2);//输出结果:1.1

%求余运算符

int a = 10;

int b = 3;

int c = a%b;

Console.WriteLine(c);//输出结果:1

Console.WriteLine(a / b);//输出结果:0

//注意求余,一般仅限于 整形类型(short,int,long)

 ++自增运算符

int iu = 10;

iu++;//iu = 11, iu = iu + 1;

++iu;//iu = 12, iu = iu + 1;

i++与++i的区别

int a = 10;

int b = a++;//b=10

Console.WriteLine($"a的值={a},b的值={b}");//输出结果:a=11 b=10

int a = 10;

int b = ++a;//b=11 a=11

Console.WriteLine($"a的值={a},b的值={b}");//输出结果:a=11 b=11

--自减运算符

int i = 10;

i--;//i = 9 i = i -1;

--i;//i = 8 i = i -1 ;

i--与--i与i++,++i一样

二、关系运算符
下表显示了 C# 支持的所有关系运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
 

运算符描述实例
==检查两个操作数的值是否相等,如果相等则条件为真A==B不为真
!=检查两个操作数的值是否相等,如果不相等则为真A!=B为真
>检查左操作数的值是否大于右操作数的值,如果是则条件为真A>B不为真
<检查左操作数的值是否小于右操作数的值,如果是则条件为真A<B为真
>=检查左操作数的值是否大于等于右操作数的值,如果是则条件真A>=B不为真
<=检查左操作数的值是否小于等于右操作数的值,如果是则条件真A<=为真

三、逻辑运算符

下表显示了 C# 支持的所有逻辑运算符。假设变量 A 为布尔值 true,变量 B 为布尔值 false,则:

运算符描述实例
&&称为逻辑与运算符。如果两个操作数都是非零,则条件为真。A&&B为真
||称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真A||B为真
!称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真非运算符将使其为假!(A&&B)为真

四、赋值运算符
下表列出了 C# 支持的赋值运算符:
 

运算符描述实例
=简单的赋值运算符,把右边操作数的值赋给左边操作数C=A+B将A+B的值赋给C
+=加且赋值运算符,把右边操作数加上左边操作数的结果赋给左边操作数C+=A相当于C=C+A
-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数C-=A相当于C=C-A
*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数C*=A相当于C=C*A
/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数C/=A相当于C= C /A
%=求模且赋值运算符,求两个操作数的模赋值给左边操作数C%=A相当于C = C%A
<<=左移且赋值运算符C<<=2等同于C= C<<2
>>=右移且赋值运算符C>>=2等同于C= C>>2
&=按位与且赋值运算符C&=2等同于C = C&2
^=按位异或且赋值运算符C^=2等同与C =C^2

五、其他运算符
下表列出了 C# 支持的其他一些重要的运算符,包括 sizeof、typeof 和 ? :。

运算符描述实例
sizeof()返回数据类型的大小sizeof(int),返回4
typeof()返回class的类型typeof(Program);
&返回变量的地址&a;将得到变量的实际地址
*变量的指针*a;将指向一个变量
?:条件表达式如果条件为真?则为X:否则为Y
is判断对象是否为某一类型。if(Ford is Car)//检查Ford是否是Car类的一个对象
as 强制转换,即使转换失败也不会抛出异常

object obj = new StringReader("Hello");

StringReader r = obj as StringReader;

namespace Demo运算符
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //自加自减
            //++自加1      --自减1
            //int a = 10;
            //a++;//a = a+1
            //Console.WriteLine(a);
            //int b = 10; 
            //b--;//b = b-1
            //Console.WriteLine(b);

            ++在前      ++在后
            ++在前  先自加再赋值
            ++在后  先赋值再自加
            --在前      --在后
            --在前  先自减再赋值
            --在后  先赋值再自减
            //int x = 3;
            //int y = x--;
            //Console.WriteLine("y={0}",y);
            //y = --x;
            //Console.WriteLine("y={0}", y);

            //int z = 2;
            //int s = z++;//2 s=2 z =3
            //Console.WriteLine("s = {0}", s);
            //s = ++z;//4 s=4 z=4
            //Console.WriteLine("s = {0}", s);

            //+
            //int a = 10;
            //int b = 20;
            //int c = a + b;
            //Console.WriteLine(c);
            -
            //int d = a - b;
            //Console.WriteLine(d);
            *
            //int e = a * b;
            //Console.WriteLine(e);
              /取整数
            //int f = a / b;
            //Console.WriteLine(f);
            % 取余数
            //int g = a % b;
            //Console.WriteLine(g);

            //练习:从键盘输入一个三位数的整数,分别输出它的百位、个位和十位数。
            //Console.WriteLine("请输入一个三位的整数:");
            一个三位整数输入123 /100      %100/10     %10
            //int num = Convert.ToInt32(Console.ReadLine());
            百位 /100
            //int num1 = num / 100;
            //Console.WriteLine(num1);
            十位 %100/10
            //num1 = num % 100 / 10;
            //Console.WriteLine(num1);
            个位 %10
            //num1 = num % 10;
            //Console.WriteLine(num1);

            //四位数 取最前面的一个数字的时候,这个数字是几位数就/几
            //Console.WriteLine("请输入一个五位的整形数据:");
            一个五位整数的输入     12345 /10000    %10000/1000     %1000/100
            %100/10   %10
            //int num3 = Convert.ToInt32(Console.ReadLine());
            //if((num3 > 0) &&(num3 < 100000))
            //{
            //    //万位
            //    int num1 = num3 / 10000;
            //    Console.WriteLine("输入的五位整数万位:{0}", num1);
            //    //千位
            //    num1 = num3 % 10000 / 1000;
            //    Console.WriteLine("输入的五位数的千位:{0}", num1);
            //    //百位
            //    num1 = num3 % 1000 / 100;
            //    Console.WriteLine("输入的五位数的百位:{0}", num1);
            //    //十位
            //    num1 = num3 % 100 / 10;
            //    Console.WriteLine("输入的五位数的十位:{0}", num1);
            //    //个位
            //    num1 = num3 % 10;
            //    Console.WriteLine("输入的五位整数的个位:{0}", num1);
            //}
            //else if((num3 < 0) || (num3 >= 100000))
            //{
            //    Console.WriteLine("输入的数据错误,请输入一个五位的整数!!!");
            //}

            //复合运算符
            //int x = 10;
            //int y= 20;
            //x += y;//x = x + y;
            //Console.WriteLine(x);

            设int s = 11,则执行完s+=s*s之后,s的值是
            //int s = 11;
            //s += s * s;
            //Console.WriteLine(s);

            //关系运算符
            //int a = 10;
            //int b = 20;
            //bool c = a > b;
            //Console.WriteLine(c);

            //c = a < b;  
            //Console.WriteLine(c);

            //c = a >= b;
            //Console.WriteLine(c);

            //c = a <= b;
            //Console.WriteLine(c);

            //c = a == b;
            //Console.WriteLine(c);

            //c = a != b;
            //Console.WriteLine(c);

            //string类型
            //string a = "10";
            //string b = "80";
            //string s = a + b;
            //Console.WriteLine(s+"asdf");

            //string a = "a";
            //string b = "b";
            //bool c = a == b;
            //Console.WriteLine(c);
            //逻辑运算符
            //&&与 并且    ||或者        !:取反
            //&&:2个条件都正确才会返回true 否则返回false
            //true true true
            //true false false
            //false true false
            //false false false
            //Console.WriteLine("请输入第一个一位整数:");
            //int num1 = Convert.ToInt32(Console.ReadLine());
            //Console.WriteLine("请输入第二个一位整数:");
            //int num2 = Convert.ToInt32(Console.ReadLine());
            //bool than = num1 == 9 && num2 ==9;
            //Console.WriteLine(than);
            //than = num1 < 10 && num2 >=10;
            //Console.WriteLine(than);
            //than = num1 > 10 && num2 <= 10;
            //Console.WriteLine(than);
            //than = num1 >= 10&&num2 >=10;
            //Console.WriteLine(than);

            //  ||或 或者 只要一个条件对了就返回true
            //true true true
            //false true true
            //true false true
            //false false false
            //int a = 10;
            //int b = 20;
            //bool c = a == 10 || b== 20;
            //Console.WriteLine(c);
            //c = a < 10 || b == 20;
            //Console.WriteLine(c);
            //c = a == 10 || b > 20;
            //Console.WriteLine(c);
            //c= a> 10 || b > 20;
            //Console.WriteLine(c);

            !:取反
            //int a = 10;
            //int b = 20;
            //bool c = !(a > b);
            //Console.WriteLine(c);
            //Console.WriteLine(!c);

            //条件运算符
            //操作数1?操作数2:操作数3
            //?前面的是对的true就返回:前面的值,反之就返回:后面的值
            //int a = 10;
            //bool b = a > 10 ? true : false;
            //Console.WriteLine(b);
            //string d = a >= 10 ? "10" : "22";
            //Console.WriteLine(d);

            //条件1能被4整除 不能被100整除
            //条件2能被400整除
            //Console.WriteLine("请输入一个年份:");
            //int num1 = Convert.ToInt32(Console.ReadLine());
            //bool a = (((num1 % 4 == 0) && (num1 % 100 != 0)) || (num1 % 400 == 0)) ? true : false;
            //Console.WriteLine(a);

            sizeof
            //int a = sizeof(int);
            //Console.WriteLine(a);

            typeof 反射
            //Console.WriteLine(typeof(Program));

            //运算符的优先级
            //运算优先级别—般规则∶
            // 一元运算符高于二元运算教高于三元运算符
            //算术运算符高于关系运算符﹐高于逻辑运算符
            //int a = 10;
            //int b = 20;
            //bool c = b + a++ > 10&& b == 20 ? true : false;
            //Console.WriteLine(c);


        }
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值