运算符只是一个用于执行操作的符号。可以有许多类型的操作,如算术,逻辑,按位等运算操作。
有以下类型的运算符可以在 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();
}
}
}
当编译和执行上述代码时,会产生以下结果:
line 1 - value of c is 31
line 2 - value of c is 11
line 3 - value of c is 210
line 4 - value of c is 2
line 5 - value of c is 1
line 6 - value of c is 22
line 7 - value of c is 20
下面示例代码演示 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");
}
}
}
当编译和执行上述代码时,会产生以下结果:
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 b
下面示例代码演示 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();
}
}
}
当编译和执行上述代码时,会产生以下结果:
line 1 - condition is true
line 2 - condition is true
line 3 - condition is not true
line 4 - condition is true
下面将通过示例来演示 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();
}
}
}
当编译和执行上述代码时,会产生以下结果:
line 1 - value of c is 12
line 2 - value of c is 61
line 3 - value of c is 49
line 4 - value of c is -61
line 5 - value of c is 240
line 6 - value of c is 15
有关 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();
}
}
}
当编译和执行上述代码时,会产生以下结果:
line 1 - = value of c = 21
line 2 - += value of c = 42
line 3 - -= value of c = 21
line 4 - *= value of c = 441
line 5 - /= value of c = 21
line 6 - %= value of c = 11
line 7 - <<= value of c = 44
line 8 - >>= value of c = 11
line 9 - &= value of c = 2
line 10 - ^= value of c = 0
line 11 - |= value of c = 2
还有其他几个重要的操作符,包括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();
}
}
}
当编译和执行上述代码时,会产生以下结果:
the size of int is 4
the size of short is 2
the size of double is 8
value of b is 30
value of b is 20
运算符的优先级指定哪个运算符将被首先评估计算。关联性指定要评估的操作符方向,可以是左到右,或从右到左。
下面给出一个优先级的例子代码:
int data= 10+ 5*5 ;
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();
}
}
}
当编译和执行上述代码时,会产生以下结果:
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