当前位置: 首页 > article >正文

【超详细】C#基础-基本运算、语句

目录

1.基本运算

(1)运算符

①赋值运算符

②算术运算符

③比较运算符

④逻辑运算符

⑤快捷运算符

⑥一元运算符

⑦位运算符

⑧三元运算符

(2)基本类型转换

①隐式转换

②显示转换

③Parse转换

④Conver类

⑤ToString

2.语句

(1)选择语句

①if语句

②switch语句

(2)循环语句

①for循环

②foreach

③while循环

④do-while循环

(3)跳转语句


       本篇文章来学习一下基本运算和语句。

1.基本运算

(1)运算符

①赋值运算符

       将右边的值赋值给左边变量

int a;
a = 3;

②算术运算符

       包括+、-、*、/、%(取模/余数),用于数值类型的两个数据进行算术运算。其中string类型可以使用+,意为字符串的拼接

int a,b,c;
a = 1;
b = 2;
c = a + b;
c = a - b;
c = a * b;
c = a / b;//取商 0
c = a % b;//取模/取余数 1

string str = "Hello";
str = str + ",world!";//str="Hello,world!"

③比较运算符

       比较运算符用于比较两个值,并返回一个布尔值(true 或 false)包括>、<、>=、<=、==、!=。其中string类型可以使用==和!=,意为文本是否相同

运算符说明示例
==等于,判断两个值是否相等5 == 5 返回 true
!=不等于,判断两个值是否不等5 != 4 返回 true
>大于,判断左边的值是否大于右边5 > 3 返回 true
<小于,判断左边的值是否小于右边5 < 10 返回 true
>=大于等于,判断左边的值是否大于等于右边5 >= 5 返回 true
<=小于等于,判断左边的值是否小于等于右边3 <= 5 返回 true
int a = 5, b = 10;
bool result1 = a == b;//false
bool result2 = a != b;//true
bool result3 = a > b;//false
bool result4 = a < b;//true
bool result5 = a >= b;//false
bool result6 = a <= b;//true

string str1 = "Hello";
string str2 = "Hello";
string str3 = "hello";

bool res1 = str1 == str2;//true
bool res2 = str1 == str2;//false,区分大小写

string str4 = "hello";
string str5 = "HELLO";

//比较两个字符串时忽略大小写,使用 String.Equals 方法
bool result = string.Equals(str4, str5, StringComparison.OrdinalIgnoreCase);
Debug.Log(result);//true,因为忽略大小写

④逻辑运算符

       逻辑运算符用于连接布尔值,判断多个条件是否同时成立

运算符说明示例
&&逻辑与,两个条件都为 true 时返回 truetrue && false 返回 false
||逻辑或,两个条件都为false时返回 falsetrue || false返回true
!逻辑非,取反,true 转 falsefalse 转 true!true 返回 false
bool condition1 = true;
bool condition2 = false;

bool andResult = condition1 && condition2;//false
bool orResult = condition1 || condition2;//true
bool notResult = !condition1;//false

注意:
        短路逻辑,&&当第一个操作数为false时,不会判断第二个操作数,可以提高效率,避免不必要的计算;||当第一个操作数为true时,不会判断第二个操作数,可以将计算量大的条件往后放,从而提高性能

⑤快捷运算符

       快捷运算符用于在进行运算的同时,直接将运算结果赋值给变量。它们是简写的形式,使代码更加简洁。

运算符说明示例
+=加法赋值,将右边的值加到左边并赋值a += 3 等同于 a = a + 3
-=减法赋值,将右边的值从左边减去并赋值a -= 2 等同于 a = a - 2
*=乘法赋值,将左边的值乘以右边并赋值a *= 2 等同于 a = a * 2
/=除法赋值,将左边的值除以右边并赋值a /= 2 等同于 a = a / 2
%=取模赋值,将左边的值取模右边并赋值a %= 3 等同于 a = a % 3

⑥一元运算符

运算符描述示例结果
前置++先加1,后返回int a = 5; Console.WriteLine(++a);输出:6 (a 先加 1,然后输出 6)
后置++先返回,后加1int a = 5; Console.WriteLine(a++);输出:5 (先输出 a 的值,再加 1)
前置--先减1,后返回int b = 10; Console.WriteLine(--b);输出:9 (b 先减 1,然后输出 9)
后置--先返回,后减1int b = 10; Console.WriteLine(b--);输出:10 (先输出 b 的值,再减 1)
+表示正数int a = 5; Console.WriteLine(+a);输出:5 (没有改变 a 的值)
-将值取负int a = 5; Console.WriteLine(-a);输出:-5 (a 变为负值)
(type)强制类型转换,将数据转换为指定类型double a = 3.14; int b = (int)a;输出:3 (强制转换为 int)
!逻辑非,反转布尔值bool flag = true; Console.WriteLine(!flag);输出:false (反转布尔值)
~按位取反,反转二进制中的每一位int a = 5; Console.WriteLine(~a);

输出:-6 (转为二进制后,按位取反)

⑦位运算符

运算符运算描述运算规则示例代码输出
按位与(&对两个数的每一对二进制位进行与操作,只有两个二进制位都是 1 时,结果为 1,否则为 01 & 1 = 10 & 1 = 01 & 0 = 00 & 0 = 0int a = 5; int b = 3; int result = a & b;1
按位或(|)对两个数的每一对二进制位进行或操作,只有两个二进制位都是 0 时,结果为 0,否则为 11 | 1 = 1, 0 | 1 = 1, 1 | 0 = 1, 0 | 0 = 0int a = 5; int b = 3; int result = a | b;7
按位异或(^对两个数的每一对二进制位进行异或操作,当二进制位相同时,结果为 0,不同则结果为 11 ^ 1 = 00 ^ 1 = 11 ^ 0 = 10 ^ 0 = 0int a = 5; int b = 3; int result = a ^ b;6
按位取反(~将数值的每一位反转,0 变为 11 变为 0~a:将 a 的每一位取反
~n = -(n+1)
int a = 5; int result = ~a;-6
左移(<<将数值的二进制位向左移动指定的位数,左移等于乘以 2 的移位数次方。a << n a 的二进制位左移 n 位。a << n = a * 2^nint a = 5; int result = a << 2;20
右移(>>将数值的二进制位向右移动指定的位数,右移等于除以 2 的移位数次方。对于有符号整数,符号位扩展。a >> n a 的二进制位右移 n 位。a >> n = a / 2^nint a = 20; int result = a >> 2;5

⑧三元运算符

       三元运算符(也叫条件运算符)用于根据条件选择两个值中的一个。条件?结果1:结果2

int a = 5, b = 10;
int max = (a > b) ? a : b;//如果a > b为真,返回 a,否则返回 b
Debug.Log(max);//10

(2)基本类型转换

①隐式转换

       小数据类型自动转换为大数据类型,多种变量参与运算,结果自动向较大的类型提升

②显示转换

       大数据类型强制转换为小数据类型

③Parse转换

       其他类型转换为string类型,Parse 字符串->值类型,无法转换会抛异常,使用TryParse通过bool表达式配合使用,防止类型转换失败

④Conver类

       通用转换方法:Convert.ChangeType(值,Type类型)

⑤ToString

       任何类型都可以转换为string类型,ToString数据类型->字符串具体可以参考C#的数据类型转换

2.语句

(1)选择语句

①if语句

       注意else属于上一个if,书写格式如下:value可以是表达式、比较运算符、常数值

if(value)
{
    //语句1;
}
else
{
    //语句2;
}

int a = 88;
if (a >= 0)
{
    Debug.Log("a为非负数");
}
else
{
    Debug.Log("a为负数");
}

②switch语句

       switch表达式中的变量可以是整型、string、bool、char、枚举或相应可以为null的类型,必须有一个定值,case标签后是常数值,不必连续,也不必按特定顺序排序,但不能相同,default标签可选,指其他的结果,break是在case与case之间中断程序。书写格式如下:

switch(value)
{
    case 常数值1:
    break;
    case 常数值2:
    break;
    default:
    break;
}

int number = 1;//假设限定 number 为 1 到 3 之间的数字
switch (number)
{
    case 1:
        Debug.Log("number为 1");
        break;
    case 2:
        Debug.Log("number为 2");
        break;
    case 3:
        Debug.Log("number为 3");
        break;
    default:
        Debug.Log("number无效,number 为 1 到 3 之间的数字");
        break;
}

注意:

       if-else和switch-case都可以实现多路分支,if-else实现两路、三路比较方便,switch-case实现三路以上分支结构更清晰,而且case标签必须是定值,所以不适合做范围判断

(2)循环语句

①for循环

       做预定次数的循环

for (int i = 1; i <= 5; i++)
{
    Debug.Log(i);
}

②foreach

       foreach 是C#中用于遍历集合或数组的语法,提供了一种简洁且安全的方式来访问集合中的每个元素,而无需使用索引。与for循环不同,foreach不需要手动控制循环变量的增减,它会自动迭代集合或数组中的每个元素。书写格式如下:

foreach (var item in collection)
{
         //操作语句
}

item:集合或数组中的当前元素。

collection:要遍历的集合或数组。

var:一个类型推断关键字,编译器会自动推断item的类型。也可以显式指定类型,如int或string。

int[] numbers = { 1, 2, 3, 4, 5 };
foreach (var number in numbers)
{
    Debug.Log(number);
}

③while循环

       满足条件就进入循环

int i = 1;
while (i <= 5)
{
    Debug.Log(i);
    i++;
}

④do-while循环

       至少执行一次循环

int i = 1;
do
{
    Debug.Log(i);
    i++;
}
while (i <= 5);

(3)跳转语句

       用于将控制转移给另一段代码

跳转语句作用使用场景
break终止循环(退出最近的循环体)或 switch 语句的执行用于提前退出循环(forwhiledo-while);用于退出 switch 语句
continue跳过当前循环中的剩余部分,开始下一次循环用于跳过当前迭代,进入下一次循环
return返回方法并结束执行用于方法中返回值,或结束 void 方法的执行
goto跳转到指定标签处跳转到程序中的特定标签处,通常用于复杂的跳转逻辑
throw抛出异常,结束当前方法的执行用于异常处理,抛出异常以转移控制权到异常处理器

       好了,本次的分享到这里就结束啦,希望对你有所帮助~


http://www.kler.cn/a/407991.html

相关文章:

  • 【Python】爬虫实战:高效爬取电影网站信息指南(涵盖了诸多学习内容)
  • Ubuntu20.04 Rk3588 交叉编译ffmpeg7.0
  • LeetCode 力扣 热题 100道(九)反转链表(C++)
  • element-plus教程:Checkbox 多选框
  • 力扣-位运算-1【算法学习day.41】
  • 运维团队3D可视化智能机房管理方案
  • DICOM核心概念:显式 VR(Explicit VR)与隐式 VR(Implicit VR)在DICOM中的定义与区别
  • springmvc 用了 @RequestMapping 是不是可以不用
  • CSP/信奥赛C++语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes
  • 基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现四
  • aws ses生产环境申请
  • 前端实习第四周小结
  • Spring Boot 和 Spring Cloud 微服务开发实践详解
  • 反向代理模块开发
  • 【linux】(17)压缩和解压
  • 基于Qwen-Agent框架的Function Call及ReAct方式调用自定义工具
  • pytorch官方FasterRCNN代码详解
  • 如何利用 Puppeteer 的 Evaluate 函数操作网页数据
  • 开源代码统计工具cloc的简单使用
  • 哈夫曼树:数据压缩的核心算法及实现
  • (附项目源码)Java开发语言,220 ssm电影推荐系统的分析与设计,计算机毕设程序开发+文案(LW+PPT)
  • 超文本传输协议(HTTP)与超文本传输安全协议(HTTPS)
  • 全志T113双核异构处理器的使用基于Tina Linux5.0——异构双核通信验证
  • 【探寻密码的奥秘】-000:密码相关概念定义及介绍(持续更新~~)
  • JVM垃圾回收详解.②
  • 【微蓝课堂】机器人编程|树莓派系列|13-从零开始编写TM1637驱动程序