c#运算符

本文详细介绍了C#中的各类运算符,包括算术、自增自减、关系、逻辑、赋值、位运算符等,解释了它们的功能、用法及优先级。并通过实例展示了如何在代码中正确应用这些运算符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。 C# 有丰富的内置运算符,分类如下:
1. 算术运算符
下表显示了 C# 支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
在这里插入图片描述
在这里插入图片描述
例如:

//假如A=21;B=10;
            int A = 21,B = 10;
            textBox1.Text = "A+B=" + (A + B);
            textBox2.Text = "A-B=" + (A - B);
            textBox3.Text = "A*B=" + (A * B);
            textBox4.Text = "A/B=" + (A / B);
            textBox5.Text = "A%B=" + (A % B);

在这里插入图片描述
注:
(1)“+”运算符
在算术运算中起到加法的作用
在字符串与其他类型数据之间的使用起到连接字符串作用

 //假如A=21;B=10;
            int A = 21,B = 10;
            textBox1.Text = "A+B=" + A + B;

在这里插入图片描述

//假如A=21;B=10;
            int A = 21,B = 10;
            textBox1.Text = "A+B=" + (A + B);

在这里插入图片描述
(2)自加自减运算
假设变量A的值为10

在这里插入图片描述
例如:

 //假设A=10;B=0;
            int A = 10;
            int B;
            B = A++;
            textBox1.Text = "B=" + B + ";A=" + A;
            B = ++A;
            textBox2.Text = "B=" + B + ";A=" + A;
            int a = 10;
            int b;
            b = a--;
            textBox3.Text = "b=" + b + ";a=" + a;
            b = --a;
            textBox4.Text = "b=" + b + ";a=" + a;

在这里插入图片描述
a++ 先赋值后运算;++a先运算后赋值;a- -先赋值后运算;- -a先运算后赋值;
计算机进行运算是按照补码进行运算的
面试案例:
int i=2147483647 i 的补码是:0111 1111 1111 1111 1111 1111 1111 1111
i 的补码+1 是:1000 0000 0000 0000 0000 0000 0000 0000
所以 i+1 得到的结果是-2147483648
(3). 关系运算符
下表显示了 C# 支持的所有关系运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
在这里插入图片描述
例如:

 int A = 10;
            int B = 20;
            label3.Text = "(A == B)="+(A == B).ToString();
            label4.Text = "(A != B)=" + (A != B).ToString();
            label5.Text = "(A > B)=" + (A > B).ToString();
            label6.Text = "(A < B)=" + (A < B).ToString();

在这里插入图片描述
(4)逻辑运算符
下表显示了C#支持的所有逻辑运算符。假设变量A为布尔值true,变量B为布尔值false,则:
在这里插入图片描述
例如:

 label1.Text = ((textBox1.Text == "A") && (textBox2.Text == "A")).ToString();
            label2.Text = ((textBox1.Text == "A") || (textBox2.Text == "A")).ToString();
            label3.Text = (!((textBox1.Text == "A") && (textBox2.Text == "A"))).ToString();

在这里插入图片描述
(5).赋值运算符
下表列出了 C# 支持的赋值运算符:
在这里插入图片描述
例如:

int a = 10, b = 12, c;
            label4.Text = "c=a+b:c=" + (a + b);
            label5.Text = "b+=a:b=" + (b += a);

在这里插入图片描述
(6)位运算符
位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:
在这里插入图片描述
下表列出了C#支持的位运算符。假设变量A的值为60,变量B的值为13,则:
在这里插入图片描述
在这里插入图片描述
例如:

int a = 60;
            int b = 13;
            label3.Text = "(a & b)=" + (a & b).ToString();
            label4.Text = "(a | b)=" + (a | b).ToString();
            label5.Text = "(a ^ b)=" + (a ^ b).ToString();
            label6.Text = "(~a)=" + (~a).ToString();
            label7.Text = " (a << 2)="+ (a << 2).ToString();
            label8.Text = " (a >> 2)="+(a >> 2) .ToString();

在这里插入图片描述
(7)注意事项
1.&和&&

(1). &和&&都表示逻辑与(and)的运算符,只有当运算符两边的结果都是true整个运算才为true
(2). &&具有短路功能,如果左边表达式结果为false则右边表达式不再进行运算判断。而&则不然,不论左边表达式结果是true还是false,右边表达式仍然会进行运算判断

2.|和||

(1). |和||都表示逻辑或(or)的运算符,运算符两边的表达式只要有一个是true整个表达式都是true
(2). ||具有短路功能,如果左边的表达式结果为true则右边表达式不再进行运算判断。而|则不然,不论左边表达式结果是true还是false,右边表达式都会进行运算判断

例子:

   int a = 60;
            int b = 13;
            label9.Text ="&"+ ((a++ > 70) & (b++ < 20)).ToString() + "【a=" + a + "】【b=" + b + "】";
            a = 60;
            b = 13;
            label10.Text = "&&"+((a++ > 70) && (b++ < 20)).ToString() + "【a=" + a + "】【b=" + b + "】";
            a = 60;
            b = 13;
            label11.Text = "|"+((a++ > 70) | (b++ < 20)).ToString() + "【a=" + a + "】【b=" + b + "】";
            a = 60;
            b = 13;
            label12.Text = "||"+((b++ < 20)||(a++ > 70)).ToString() + "【a=" + a + "】【b=" + b + "】";

在这里插入图片描述
(8)杂项运算符
a. sizeof()返回数据类型(值类型)的大小。sizeof(int),将返回4
b. typeof()返回class的类型。typeof(StreamReader);
c. &返回变量的地址。&a;将得到变量的实际地址。
d. “※”变量的指针。*a;将指向一个变量。
e. ?x:y-条件表达式,如果条件为真?则为x:否则为y
f. is判断对象是否为某一类型。
g. as-if(ford is car);// 检查Ford是否是Car类的一个对象。as强制转换,即使转换失败也不会抛出异常。

 string str = "";
            label1.Text ="bool类型的大小是:"+ sizeof(bool).ToString();
            label2.Text="string类型属于"+typeof(Form)+"类";
            label3.Text = "三元表达式进行对a赋值(10,8)比较大的数:a=" + (10 > 8 ? 10 : 8);

在这里插入图片描述
(9)三元运算符
运算表达式: Exp1 ? Exp2 : Exp3;
条件运算符 ? :,可以用来替代 if…else语句。它的一般形式如下:
其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。
(10)as进行类型转换

         object a="123";
            label4.Text = "a原本类型是" + a.GetType().Name+ "\r\n" + "a经过as进行强转为string类型" + (a as String).GetType().Name;
//a是object,但是通过给a赋一个string类型的值,然后通过GetType方法得到其最终类型就是string

在这里插入图片描述
(11)运算符优先级
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值