表达式由运算符和操作数组成,运算符设置对操作数进行什么样的操作
int i =927;
int j=i+10;
运算符针对操作数进行计算,同时产生计算结果,运算符是一种专门用来处理数据运算的特殊符号,数据变量结合运算符形成完整的程序运算语句
- 算术运算符
+、-、*、/、%这些都称为算术运算符,分别用于加、减、乘、除、取余运算。
int i=0;
int j=i+10;
int j=i-10;
int j=i*10;
int j=i/10;
int j=i%10;
int j=i++;后缀增量操作,该运算结果是操作数增加之前的值,j=0。
int j=++i;前缀增量操作,该运算结果是操作数增加之后的值,j=1。
i--,--i,与此操作方式一样
Math.DivRem();利用Math.DivRem()方法取余数,具体参数F12看定义
用算术运算符运算时,运算结果可能会超出所涉及值类型的值范围。需要注意
赋值运算符
赋值运算符为变量、属性、事件等元素赋值,赋值运算要求两边类型必须一致
逻辑运算符
逻辑运算符对两个表达式执行布尔逻辑操作,C#中的逻辑运算符大体可以分为:按位逻辑运算符和布尔逻辑运算符
按位“与”运算符(&):比较两个整数的相应位,当两个数的对应位都是1时,返回相应的结果是1;当两个数的对应位都是0或者其中一个位是0时,返回相应的结果是0;【都1是1,有0全0】;
static void Main(string[] args)
{
/*
* 注解:
* 十进制数1对应的二进制数为 00000001
* 十进制数85对应的二进制数为 01010101
* 根据按位“与”运算的定义得出(1&85)="00000001"(二进制就是1)
* 故iseven=False;
*/
int num1 = 1;
int num2 = 85;
bool iseven;
iseven = (num1 & num2) == 0;
Console.WriteLine(iseven);
Console.ReadKey();
}
按位“或”运算符(|):比较两个整数的相应位,当两个数的对应位有一个是1或都是1时,返回相应的结果是1;当两个数的对应位都是0时,返回相应的结果是0;【有1是1,全0是0】
static void Main(string[] args)
{
/*
* 注解:
* 十进制数1对应的二进制数为 00000001
* 十进制数85对应的二进制数为 01010101
* 根据按位“或”运算的定义得出(1|85)="01010101"(二进制就是85)
*/
int num1 = 1;
int num2 = 85;
Console.WriteLine((num1 | num2));
Console.ReadKey();
}
按位“异或”运算符(^):比较两个整数的相应位,当两个整数的对应位一个是1另外一个是0时,返回相应的结果为是1;当两个整数的相应位都是1或者都是0时,则返回相应的结果位是0;【[1,0]是1;[1,1][0,0]是0】
static void Main(string[] args)
{
/*
* 注解:
* 十进制数1对应的二进制数为 00000001
* 十进制数85对应的二进制数为 01010101
* 根据按位“异或”运算的定义得出(1^85)="01010100"(二进制就是84)
*/
int num1 = 1;
int num2 = 85;
Console.WriteLine((num1 ^ num2));
Console.ReadKey();
}
布尔“与”运算符(&):计算两个布尔表达式,两个表达式结果都为真时,返回真;否则,返回假;
static void Main(string[] args)
{
string name = "akon";
int age = 20;
if (name == "akon" & age == 20)//判断两个表达式结果
{
//True;
}
else
{
//False;
}
}
static void Main(string[] args)
{
string name = "akon";
int age = 20;
if (name == "akon" && age == 20)
{
//True;
}
else
{
//False;
}
}
&和&&区别在于:&是两个条件都判断,最后返回结果;&&是先判断第一个表达式,如果结果为假,就不判断之后的表达式了
布尔“或”运算符(|):计算两个布尔表达式,两个表达式有一个为真时,返回真;两个表达式结果都是假时,返回假;
static void Main(string[] args)
{
string name = "akon";
int age = 20;
if (name == "akon" | age == 30)
{
//True;
}
else if (name == "Akon" | age == 30)
{
//False;
}
}
static void Main(string[] args)
{
string name = "akon";
int age = 20;
if (name == "akon" || age == 30)
{
//True;
}
else if (name == "Akon" || age == 30)
{
//False;
}
}
|和||区别在于:|是两个条件都判断,最后返回结果;||是先判断第一个表达式,如果结果为真,就不判断之后的表达式了
布尔“异或”运算符(^):计算两个布尔表达式,只有两个表达式一个为真另一个为假时,结果才是真,两个表达式结果都是假或者都是真时,结果为假;
static void Main(string[] args)
{
string name = "akon";
int age = 20;
if (name == "akon" ^ age == 30)
{
//True;
}
else if (name == "akon" | age == 20)
{
//False;
}
}
移位运算符(<<,>>):用于执行移位运算,分别称为左移运算和右移运算;
static void Main(string[] args)
{
int i = 10;
Console.WriteLine(Convert.ToString(i, 2)); //10的二进制 00001010
/*
*左移:
*如果第一个操作数是int或者uint(32位),则移位数由第二个操作数的低5位给出
*如果第一个操作数是long或者ulong(64位),则移位数由第二个操作数的低6位给出
*/
int j = i << 2;左移两位:00101000;(低次位丢失,高次位补零)
/*
*右移:
*如果第一个操作数是int或者uint(32位),则移位数由第二个操作数的低5位给出
*如果第一个操作数是long或者ulong(64位),则移位数由第二个操作数的低6位给出
*如果第一个操作数是int或者long,则右移位是算数移位(高序空位设置为字符位)
*如果第一个操作数是uint或者ulong,则右移位是逻辑移位(高位填充0)
*/
int j = i >> 2;//右移两位:00000010;(低次位丢失,高次位补零)
Console.WriteLine(j);
Console.ReadKey();
}
is运算符:用于检查变量是否为指定类型;
int i=10;
bool result=i is int;
条件运算符(又叫三元运算符):根据布尔表达式的值返回两个值其中一个;
int i=10;
int j=i==10?12:13;
new运算符:用于创建一个新的类型实例
strint [] array=new string[3];
typeof运算符:用于获得系统原型对象的类型,也就是Type对象;
Console.WriteLine(typeof(string));
实际开发中要根据实际情况注意运算符的优先级问题