运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。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");文章来源:https://www.toymoban.com/news/detail-702996.html StringReader r = obj as StringReader;文章来源地址https://www.toymoban.com/news/detail-702996.html |
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);
}
}
}
到了这里,关于运算符之算术运算符、关系运算符、逻辑运算符、复合赋值运算符、其他运算符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!