C#快速入门(四):运算符

一、运算符

1.1 算术运算符

算术运算符用于执行常见的数学运算: 

int x = 100 + 50;  // 加法,结果为 150
int y = x - 30;    // 减法,结果为 120
int z = x * 2;     // 乘法,结果为 300
int w = x / 3;     // 除法,结果为 50
int remainder = x % 3;  // 取余,结果为 0(100 除以 3 的余数)

Console.WriteLine("x:" + x);
Console.WriteLine("y:" + y);
Console.WriteLine("z:" + z);
Console.WriteLine("w:" + w);
Console.WriteLine("remainder:" + remainder);

Console.WriteLine("-----------自增自减----------");

/*
 * c = a++: 先将 a 赋值给 c,再对 a 进行自增运算。
 * c = ++a: 先将 a 进行自增运算,再将 a 赋值给 c 。
 * c = a--: 先将 a 赋值给 c,再对 a 进行自减运算。
 * c = --a: 先将 a 进行自减运算,再将 a 赋值给 c 。
 */
int a = 5;
a++;  // 等同于 a = a + 1;
Console.WriteLine("a:" + a);  // 输出 6

int b = 10;
b--;  // 等同于 b = b - 1;
Console.WriteLine("b:" + b);  // 输出 9

注意事项:

在实际编码中,请注意避免在表达式中使用过多的递增和递减运算符,以确保代码的可读性。递增和递减运算符的使用可能会导致代码难以理解,并引起潜在的错误。

1.2 关系运算符

int a = 21;
int b = 10;

if (a == b)
{
    Console.WriteLine("Line 1 - a 等于 b");
}
else
{
    Console.WriteLine("Line 1 - a 不等于 b");
}
if (a < b)
{
    Console.WriteLine("Line 2 - a 小于 b");
}
else
{
    Console.WriteLine("Line 2 - a 不小于 b");
}
if (a > b)
{
    Console.WriteLine("Line 3 - a 大于 b");
}
else
{
    Console.WriteLine("Line 3 - a 不大于 b");
}
/* 改变 a 和 b 的值 */
a = 5;
b = 20;
if (a <= b)
{
    Console.WriteLine("Line 4 - a 小于或等于 b");
}
if (b >= a)
{
    Console.WriteLine("Line 5 - b 大于或等于 a");
}

1.3 逻辑运算符

下面使用的判断语句,后面会做详细的讲解,目前知道是用来做判断的语句就行了。

bool result1 = true && false;     //false
result1 = true && true;     // true
result1 = false && false;    //false

boo result2 = true || false; // true
result2 = true || true; // true
result2 = false || false; //false

bool result3 = !true;    // false
result3 = !false;    // true

1.4 位运算符

位运算符作用于位,并逐位执行操作。值换成二进制进行计算。

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 - c 的值是 {0}", c);

c = a | b;           /* 61 = 0011 1101 */
Console.WriteLine("Line 2 - c 的值是 {0}", c);

c = a ^ b;           /* 49 = 0011 0001 */
Console.WriteLine("Line 3 - c 的值是 {0}", c);

c = ~a;               /*-61 = 1100 0011 */
Console.WriteLine("Line 4 - c 的值是 {0}", c);

c = a << 2;     /* 240 = 1111 0000 */
Console.WriteLine("Line 5 - c 的值是 {0}", c);

c = a >> 2;     /* 15 = 0000 1111 */
Console.WriteLine("Line 6 - c 的值是 {0}", c);

1.5 赋值运算符

int a;
int b = 5;

// 基本赋值
a = b + 5; // 将b+5的结果赋给a,a的值是10
Console.WriteLine("基本赋值:"+a);

// 加法赋值
a = 10;
a += b; // 等同于a = a + b,a 的值是 15
Console.WriteLine("加法赋值:" + a);

// 减法赋值
a = 10;
a -= b; // 等同于a = a - b,a 的值是 5
Console.WriteLine("减法赋值:" + a);

// 乘法赋值
a = 10;
a *= b; // 等同于a = a * b,a 的值是 50
Console.WriteLine("乘法赋值:" + a);

// 除法赋值
a = 10;
a /= b; // 等同于a = a / b,a 的值是 2
Console.WriteLine("除法赋值:" + a);

// 取模赋值
a = 10;
a %= 3; // 等同于a = a / 3,a 的值是 1
Console.WriteLine("取模赋值:" + a);


// 位与赋值
int flags = 0b1101; // 十进制:13,二进制:1101
int mask = 0b1011; // 十进制:11,二进制:1011

// 设置第 1 位和第 3 位,清除第 0 位和第 2 位
flags &= mask; // 结果为 0b1001,十进制:9
Console.WriteLine("flags 的十进制输出: " + flags);


// 位或运算
int status = 0b0010; // 十进制:2,二进制:0001 0010
int newFeature = 0b0100; // 十进制:4,二进制:0000 0100

// 通过位或赋值运算设置新特性位,同时保留其他位的状态
status |= newFeature; // 结果为 0b0110,十进制:6
Console.WriteLine("status 的十进制输出: " + status);


// 位运算的复合赋值
a = 0b1101; // 十进制:13,二进制:1101
b = 0b1011; // 十进制:11,二进制:1011

// 切换 a 的第 2 位的状态
mask = 0b0100; // 掩码,第 2 位为 1,其他位为 0
a ^= mask; // 结果为 0b1001,十进制:9
Console.WriteLine("a 的十进制输出: " + a);


// 交换 a 和 b 的值
a ^= b;
b ^= a;
a ^= b; // 现在 a 是原始的 b,b 是原始的 a

Console.WriteLine("a 当前的值: " + a); // 输出原始 b 的值
Console.WriteLine("b 当前的值: " + b); // 输出原始 a 的值


a = -10; // 假设我们有一个负数 a,其二进制表示为 1110 1010(32位)
b = 2; // 我们将 a 向右移动 2 位

// 执行右移赋值操作
a >>= b; // 结果为 1111 1111 1111 1111 1111 1111 1111 1110,即 -1
Console.WriteLine("右移赋值操作,a = " + a);


a = -10; // 假设我们有一个负数 a,其二进制表示为 1110 1010(32位)
b = 2; // 我们将 a 无符号右移 2 位
           // 执行无符号右移赋值操作
a >>>= b; // 结果为 0001 1111 1111 1111 1111 1111 1110,即 1073741822
Console.WriteLine("无符号右移赋值操作,a = " + a);


a = 5; // 十进制:5,二进制:0101
b = 2; // 我们将 a 向左移动 2 位
           // 执行左移赋值操作
a <<= b; // 结果为 0101 0000,即十进制的 20
Console.WriteLine("左移赋值操作,a = " + a);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值