运算符只是一个用于执行操作的符号。可以有许多类型的操作,如算术,逻辑,按位等运算操作。
有以下类型的运算符可以在 C# 语言中执行不同类型的操作运算。
算术运算符
关系运营商
逻辑运算符
按位运算符
赋值运算符
其它运算符
下面示例代码演示 C# 如何使用算术运算符。假设变量A的值为:10.变量B的值为:20.参考以下示例代码:
using System;namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 21; int b = 10; int c; c = a + b; Console.WriteLine("Line 1 - Value of c is {0}", c); c = a - b; Console.WriteLine("Line 2 - Value of c is {0}", c); c = a * b; Console.WriteLine("Line 3 - Value of c is {0}", c); c = a / b; Console.WriteLine("Line 4 - Value of c is {0}", c); c = a % b; Console.WriteLine("Line 5 - Value of c is {0}", c); c = a++; Console.WriteLine("Line 6 - Value of c is {0}", c); c = a--; Console.WriteLine("Line 7 - Value of c is {0}", c); Console.ReadLine(); } } }1234567891011121314151617181920212223242526272829复制代码类型:[csharp]
当编译和执行上述代码时,会产生以下结果:
Line 1 - Value of c is 31Line 2 - Value of c is 11Line 3 - Value of c is 210Line 4 - Value of c is 2Line 5 - Value of c is 1Line 6 - Value of c is 22Line 7 - Value of c is 201234567复制代码类型:[csharp]
下面示例代码演示 C# 如何使用关系运算符。 假设变量A的值为:10.变量B的值为:20.参考以下示例代码:
using System;class Program{ static void Main(string[] args) { int a = 21; int b = 10; if (a == b) { Console.WriteLine("Line 1 - a is equal to b"); } else { Console.WriteLine("Line 1 - a is not equal to b"); } if (a < b) { Console.WriteLine("Line 2 - a is less than b"); } else { Console.WriteLine("Line 2 - a is not less than b"); } if (a > b) { Console.WriteLine("Line 3 - a is greater than b"); } else { Console.WriteLine("Line 3 - a is not greater than b"); } /* Lets change value of a and b */ a = 5; b = 20; if (a <= b) { Console.WriteLine("Line 4 - a is either less than or equal to b"); } if (b >= a) { Console.WriteLine("Line 5-b is either greater than or equal to b"); } } }12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849复制代码类型:[csharp]
当编译和执行上述代码时,会产生以下结果:
Line 1 - a is not equal to b Line 2 - a is not less than b Line 3 - a is greater than b Line 4 - a is either less than or equal to b Line 5 - b is either greater than or equal to b1234567复制代码类型:[csharp]
下面示例代码演示 C# 如何使用逻辑运算符。 假设变量A是一个布尔值:true,变量B是一个布尔值:false,参考以下示例代码:
using System;namespace OperatorsAppl { class Program { static void Main(string[] args) { bool a = true; bool b = true; if (a && b) { Console.WriteLine("Line 1 - Condition is true"); } if (a || b) { Console.WriteLine("Line 2 - Condition is true"); } /* lets change the value of a and b */ a = false; b = true; if (a && b) { Console.WriteLine("Line 3 - Condition is true"); } else { Console.WriteLine("Line 3 - Condition is not true"); } if (!(a && b)) { Console.WriteLine("Line 4 - Condition is true"); } Console.ReadLine(); } } }12345678910111213141516171819202122232425262728293031323334353637383940复制代码类型:[csharp]
当编译和执行上述代码时,会产生以下结果:
Line 1 - Condition is trueLine 2 - Condition is trueLine 3 - Condition is not trueLine 4 - Condition is true1234复制代码类型:[csharp]
下面将通过示例来演示 C# 如何使用按位运算符。 假设变量A的值为:60.变量B的值为:13.参考以下示例代码:
using System;namespace OperatorsAppl{ class Program { static void Main(string[] args) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ Console.WriteLine("Line 1 - Value of c is {0}", c ); c = a | b; /* 61 = 0011 1101 */ Console.WriteLine("Line 2 - Value of c is {0}", c); c = a ^ b; /* 49 = 0011 0001 */ Console.WriteLine("Line 3 - Value of c is {0}", c); c = ~a; /*-61 = 1100 0011 */ Console.WriteLine("Line 4 - Value of c is {0}", c); c = a << 2; /* 240 = 1111 0000 */ Console.WriteLine("Line 5 - Value of c is {0}", c); c = a >> 2; /* 15 = 0000 1111 */ Console.WriteLine("Line 6 - Value of c is {0}", c); Console.ReadLine(); } } }1234567891011121314151617181920212223242526272829303132复制代码类型:[csharp]
当编译和执行上述代码时,会产生以下结果:
Line 1 - Value of c is 12Line 2 - Value of c is 61Line 3 - Value of c is 49Line 4 - Value of c is -61Line 5 - Value of c is 240Line 6 - Value of c is 15123456复制代码类型:[csharp]
有关 C# 如何使用赋值运算符,请参考以下示例代码:
using System;namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 21; int c; c = a; Console.WriteLine("Line 1 - = Value of c = {0}", c); c += a; Console.WriteLine("Line 2 - += Value of c = {0}", c); c -= a; Console.WriteLine("Line 3 - -= Value of c = {0}", c); c *= a; Console.WriteLine("Line 4 - *= Value of c = {0}", c); c /= a; Console.WriteLine("Line 5 - /= Value of c = {0}", c); c = 200; c %= a; Console.WriteLine("Line 6 - %= Value of c = {0}", c); c <<= 2; Console.WriteLine("Line 7 - <<= Value of c = {0}", c); c >>= 2; Console.WriteLine("Line 8 - >>= Value of c = {0}", c); c &= 2; Console.WriteLine("Line 9 - &= Value of c = {0}", c); c ^= 2; Console.WriteLine("Line 10 - ^= Value of c = {0}", c); c |= 2; Console.WriteLine("Line 11 - |= Value of c = {0}", c); Console.ReadLine(); } } }12345678910111213141516171819202122232425262728293031323334353637383940414243444546复制代码类型:[csharp]
当编译和执行上述代码时,会产生以下结果:
Line 1 - = Value of c = 21Line 2 - += Value of c = 42Line 3 - -= Value of c = 21Line 4 - *= Value of c = 441Line 5 - /= Value of c = 21Line 6 - %= Value of c = 11Line 7 - <<= Value of c = 44Line 8 - >>= Value of c = 11Line 9 - &= Value of c = 2Line 10 - ^= Value of c = 0Line 11 - |= Value of c = 21234567891011复制代码类型:[csharp]
还有其他几个重要的操作符,包括sizeof,typeof和?:等也被 C# 支持。请参考以下示例代码:
using System;namespace OperatorsAppl { class Program { static void Main(string[] args) { /* example of sizeof operator */ Console.WriteLine("The size of int is {0}", sizeof(int)); Console.WriteLine("The size of short is {0}", sizeof(short)); Console.WriteLine("The size of double is {0}", sizeof(double)); /* example of ternary operator */ int a, b; a = 10; b = (a == 1) ? 20 : 30; Console.WriteLine("Value of b is {0}", b); b = (a == 10) ? 20 : 30; Console.WriteLine("Value of b is {0}", b); Console.ReadLine(); } } }123456789101112131415161718192021222324复制代码类型:[csharp]
当编译和执行上述代码时,会产生以下结果:
The size of int is 4The size of short is 2The size of double is 8Value of b is 30Value of b is 2012345复制代码类型:[csharp]
运算符的优先级指定哪个运算符将被首先评估计算。关联性指定要评估的操作符方向,可以是左到右,或从右到左。
下面给出一个优先级的例子代码:
int data= 10+ 5*5 ;12复制代码类型:[csharp]
data变量最后的计算值为:35.因为*(乘法运算符)在+(加法运算符)之前求值。
C语言运算符的优先级和关联性如下:
分类 | 运算符 | 关联性 |
---|---|---|
后缀 | () [] -> . ++ - - | 左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 右到左 |
乘法 | * / % | 左到右 |
加法 | + - | 左到右 |
位移 | << >> | 左到右 |
关系 | < <= > >= | 左到右 |
等于 | == != | 左到右 |
按位与 | & | 左到右 |
位异或 | ^ | 左到右 |
按位或 | / | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | // | 左到右 |
条件 | ?: | 右到左 |
赋值 | = += -= *= /= %=>>= <<= &= ^= /= | 右到左 |
逗号 | , | 左到右 |
using System;namespace OperatorsAppl{ class Program { static void Main(string[] args) { int a = 20; int b = 10; int c = 15; int d = 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 Console.WriteLine("Value of (a + b) * c / d is : {0}", e); e = ((a + b) * c) / d; // (30 * 15 ) / 5 Console.WriteLine("Value of ((a + b) * c) / d is : {0}", e); e = (a + b) * (c / d); // (30) * (15/5) Console.WriteLine("Value of (a + b) * (c / d) is : {0}", e); e = a + (b * c) / d; // 20 + (150/5) Console.WriteLine("Value of a + (b * c) / d is : {0}", e); Console.ReadLine(); } } }12345678910111213141516171819202122232425262728复制代码类型:[csharp]
当编译和执行上述代码时,会产生以下结果:
Value of (a + b) * c / d is : 90 Value of ((a + b) * c) / d is : 90 Value of (a + b) * (c / d) is : 90 Value of a + (b * c) / d is : 50
联系客服