C#语法知识之变量

2.变量

在这里插入图片描述

一、知识点

1、折叠代码

//#region按Tab键
	#region MyRegion(描述)
    
	#endregion
//本质是编译器提供给我们的预处理指令,发布代码是会被自动删除

2、声明变量和变量类型

​ 变量就是可以变化的容器,用来存储各种不同类型数值的一个容器;不同的变量类型可以存储不同类型的值。

//变量类型 变量名 = 初始值;
	int i = 1;

​ 各种变量类型

//1、有符号的整形变量 是能存储一定范围正负数包括0的变量类型
    sbyte 	-128~127 之间的数 1字节(占内存)
	int		-21亿~21亿	   4字节 
	short	-3万~3万		   2字节
	long	-9百万兆~9百万兆	8字节
//2、无符号额整形变量 存储一定范围0和正数的变量类型
    byte 	0~255			1字节
    uint	0~21亿		   4字节
    ushort	0~6万		   2字节
    ulong	0~18百万兆		  8字节
//3、浮点数
    float	存储从非0数8位有效数字(有效数字是从左到右)4字节
    	float f = 0.0012345678f;
	double	存储17位有效数字(抛弃的数字会四舍五入)8字节
    decimal	16字节
        decimal de = 0.000123456789999m;
		de = 0.099m; //(变量的修改)
//4、特殊类型
	bool	只存储true或false	1字节
    char 	字符类型:用来存储单个字符的变量类型	2字节
        char c = 'a'; 
	string	字符串类型:存储多个字符

3、为什么有那么多不同类型的变量

//不同的变量,存储的范围和类型不一样,本质是占用的内存空间不同,选择不同的数据类型装载c不同的数据
数字用int	小数用float 字符串用string 真假用bool

4、多个相同类型的变量同时申明

//变量类型 变量名 = 初始值,变量名 = 初始值...;
int i = 1,a = 2,b = 3;

5、变量初始化相关

//变量声明时,可以不设置初始值,但这样不安全
int i;
i = 1;
思考

1、下面的代码输出结果是?

double num = 36.6;
Console.WriteLine("num");

2、声明float类型变量时,为何要在数字后面加f?

答案:1.num 2.不加f默认为double类型

二、变量的本质

1、变量的存储空间

1byte = 8bit	//一字节等于8位
1KB/MB/GB/TB = 1024byte/KB/MB/GB
//通过sizeof方法,可以获取变量类型所占的内存空间(单位:字节)
    int sbyteSize = sizeof(sbyte);

2、变量的本质(2进制)

变量的本质是二进制,就是一堆0和1
计算机中的存储最小单位为 bit(位),它只能表示0和1 
为了方便数据表示,人们定义一个byte存储单位,由8bit组成
1byte = 0001 0100	//通过0和1不同的排列组合,表示各种含义
//2进制转10进制的规则
    从右往左看,最右边的第一位为第0位,如果该位不为0,则加上2的n位次方
    2^0 + 2^1 + 2^3 + 2^4 + 2^5 + ... +2^n	//规律:
    数:1(0)1(0)1(0)1(0) 1(0)1(0)  1(0) 1(0)   1(0)  1(0)
    位:0 + 1 + 2 + 3 +  4 + 5  +  6 +  7  +   8  +   n
    值:1 + 2 + 4 + 8 + 16 + 32 +  64 + 128 + 256 +  2^n
    2进制里若位n上对应的数为0,则值为0,若为1,则+位n对应的值
    例:
    101 = 1+0+4 =5
    1111 = 1+2+4+8 =15
    11001 = 1+0+0+8+16 =25
//byte为一个字节,8位,对应内存如下:
    byte : 0000 0000 最大存储 1111 1111 值为255
    sbyte :0(符号位)000 0000

三、变量的命名规范

1、必须遵守的规则

1、不能重名
2、不能以数字开头
3、不能使用关键字
4、不能有特殊符号(下划线除外)

2、常用命名规则

1、驼峰命名法  	 //首字母小写,之后单词首字母大写(变量)
	string myName = "xxx";
2、帕斯卡命名法	//所以单词首字母都大写(函数、类)
    string MyName = "xxx";
//C#中对大小写是敏感的、区分的

四、常量

1、常量的声明

关键字 const
const 变量类型 变量名 = 初始值;
const float PI = 3.141592653f;

2、常量的特点

1、必须初始化
2、不能被修改
    //作用:声明一些常用不变的变量

五、转义字符

1、转义字符的使用

//什么是转义字符
	它是字符串的一部分,用来表示一些特殊含义的字符;比如在字符串中表现单引号、引号、空行等
//常用转义字符
    单引号\'	双引号\"	换行\n 	 斜杠\\
//不常用转义字符
    制表符\t	光标退格\b	空字符\0	报警音\a

2、取消转义字符

@
string str = @"xxx";

六、类型转换

一、隐式转换

1、什么是类型转换
	//不同变量类型之间的相互转换
2、什么是隐式转换
    //不同类型之间自动转换(不需要人为去操作)
3、左(大范围)装右(小范围)

1、相同大类型之间的转换

//有符号 long-->int-->short-->sbyte
    long l = 2; int i = 2; l = i;
//无符号 Ulong-->uint-->ushort-->byte
	ulong ul = 2; uint ui= 2; ul =ui;
//浮点数 decimal(无隐式转换)  double-->float
	double d = 1.1; float f = 1.1f; d = f;
//特殊类型 bool char string	不存在隐式转换

2、不同大类型之间的转换

//无符号装有符号
	有符号的变量不能隐式转换成无符号的变量
//有符号装无符号
    要范围大于无符号 long-->uint int --> byte
//浮点数装整数
    浮点数可以装载任何类型的整数 double-->float-->ulong
    decimal 可以隐式存储所有整形
//特殊类型
    char 可以隐式转换成整形和浮点型 int->char float->char
        char c = 'A'; int i = c; (int a ='a')
    //char 隐式转换的数字是对应的ASCII码
总结:
    double --> float --> 整形(有、无符号)-->char
    decimal --> 整形(有、无符号) -->char
    string 和 bool 不参与隐式转换

二、显式转换

​ 手动处理、强制转换

1、括号强转

作用:一般情况下,将高精度的类型强制转换为低精度
语法:变量类型 变量名 = (变量类型)变量;	//注意精度、范围问题
	 int i =1; short s = (short)i;  //强转注意范围
//无符号转有符号
	int i = -1; uint ui = (uint)i; //会异常
//浮点转整形
	int i = (int)1.86f; //会丢失精度,不会四舍五入
//数值转char
	char c = (char)10;
//bool和string 不能通过括号强转

2、Parse法

作用:把字符串类型转换为对应的类型
语法:变量类型.Parse("字符串")
//注意:字符串必须能够转换成对应类型(确保类型,精度大小),否则报错
    int i = int.Parse("123");

3、Convert法

作用:更加准确的将各个类型之间进行相互转换
语法:Convert.To目标类型(变量或常量);
//注意:填写的变量或常量必须正确,否则出错
//转字符串
	int a = Convert.ToInt32("123");
	int a = Convert.ToInt32(1.66f);	//Convert.To会四舍五入,精度更高
//把bool类型也可以专场数值类型;true为1,false为0
	int a = Convert.ToInt32(ture);
//每一个类型都有对应的Convert方法
	sbyte sb = Convert.ToSByte("1");
	short s = Convert.ToInt16("1");
    int i = Convert.TOInt32("1");
    long l = Convert.ToInt64("1");
        
    byte b = Convert.ToByte("1");
    ushort us = Convert.ToUInt16("1");
    uint ui = Convert.ToUInt32("1");
    ulong ul = Convert.ToUInt64("1");
        
    float f = Convert.ToSingle("11.2");		//特殊
    double d = Convert.ToDouble("11.2");
    decimal de = Convert.ToDecimal("11.2");
        
    bool bo = Convert.ToBoolean("ture");  //特殊
    char c = Convert.ToSByte("A");
	string str = Convert.ToString(123);

4、其他类型转string

作用:拼接打印
语法:变量.ToString();
	string str = true.ToString();
//字符串拼接时,会自动调用ToString
	Console.WriteLine("1"+true);

七、异常捕获

1、作用

避免代码报错时,造成程序异常卡死
string str = Console.ReadLine();
int i = int.Parse(str);

2、基本语法

try{
    //捕获异常代码块
}catch{
    //代码出差,执行catch里的代码,catch(Exception e)具体报错跟踪
}finally{
    //最后执行的代码
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/550245.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

和鲸科技将参与第五届空间数据智能学术会议并于应急减灾与可持续发展专题论坛做报告分享

ACM SIGSPATIAL中国分会致力于推动空间数据的研究范式及空间智能理论与技术在时空大数据、智慧城市、交通科学、社会治理等领域的创新与应用。ACM SIGSPATIAL中国分会创办了空间数据智能学术会议(SpatialDI),分会将于2024年4月25日-27日在南京…

Go Plugin:动态模块的加载与问题解析_go语言加载动态库的工具(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

人工智能与IP代理池:解析网络数据采集的未来

前言 随着互联网的快速发展,数据成为了当今社会最宝贵的资源之一。然而,要获取大量的网络数据并进行有效的分析,往往需要面对诸多挑战,其中之一就是网络封锁与反爬虫机制。在这个背景下,人工智能(AI&#x…

JavaEE:JVM

基本介绍 JVM:Java虚拟机,用于解释执行Java字节码 jdk:Java开发工具包 jre:Java运行时环境 C语言将写入的程序直接编译成二进制的机器语言,而java不想重新编译,希望能直接执行。Java先通过javac把.java…

02 - ArcGIS For JavaScript-矢量数据的符号化处理(Symbol)

文章目录 综述Symbol的分类Point的符号化Point符号化为二维几何:Point位图符号化:Point的三维结合符号化Point 符号化为GLTF模型 PolylineSymbol-线符号化基本样式管道样式墙体样式条带样式方管样式 PolygonSymbol-面符号化水面效果拉伸效果填充效果 Mes…

外面收费的彩虹自助下单系统模板

搭建教程 下载之后上传到template文件夹里面 注意带上里面的文件夹 然后去后台替换就行 源码免费下载地址抄笔记 (chaobiji.cn)

PLSQL中文乱码问题 + EZDML导入数据库模型乱码

PLSQL中文乱码问题 EZDML导入数据库模型乱码 查询数据库字符集 select userenv(language) from dual;查询本地字符集编码 select * from V$NLS_PARAMETERS;理论上 数据库字符集 跟 本地字符集编码 是一致的 本地字符集编码需要拼接字段值 NLS_LANGUAGE NLS_TERRITORY NLS…

项目7-音乐播放器2(上传音乐+查询音乐+拦截器)

0.加入拦截器 之后就不用对用户是否登录进行判断了 0.1 定义拦截器 0.2 注册拦截器 生效 1.上传音乐的接口设计 请求: { post, /music/upload {singer,MultipartFile file}, } 响应: { "status": 0, "message&…

免费的 ChatGPT、GPTs、AI绘画(国内版)

🔥博客主页:白云如幻❤️感谢大家点赞👍收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚…

2.4G漂移小车电子方案 酷得智能科技

漂移高速遥控车是一种专门设计用于执行高速漂移动作的遥控车模型。以下是一些关于漂移高速遥控车的功能介绍: 1、高速性能:漂移车通常配备有强力的电机和电池,以便在保持高速的同时进行漂移动作。 2、漂移能力:漂移车的轮胎和悬挂…

计算机网络:MAC地址 IP地址 ARP协议

计算机网络:MAC地址 & IP地址 & ARP协议 MAC地址IP地址ARP协议 MAC地址 如果两台主机通过一条链路通信,它们不需要使用地址就可以通信,因为连接在信道上的主机只有他们两个。换句话说,使用点对点信道的数据链路层不需要使…

SCI一区 | Matlab实现POA-TCN-BiGRU-Attention鹈鹕算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测

SCI一区 | Matlab实现POA-TCN-BiGRU-Attention鹈鹕算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现POA-TCN-BiGRU-Attention鹈鹕算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考…

Proxyman Premium for Mac v5.1.1激活版:卓越的网络调试与分析工具

Proxyman Premium for Mac是一款功能强大的网络调试与分析工具,专为开发人员和测试人员精心打造。它集多种功能于一身,为用户提供了全面、高效的网络开发体验。 Proxyman Premium for Mac v5.1.1激活版下载 作为一款跨平台代理工具,Proxyman …

# RAG | Langchain # Langchain RAG:打造Markdown文件的结构化分割解决方案

【文章简介】 在信息技术的现代背景下,高效地处理和分析文本数据对于知识获取和决策支持至关重要。Markdown文件因其易读性和高效性,在文档编写和知识共享中占据了重要地位。然而,传统的文本处理方法往往忽视了Markdown的结构化特性&#xff…

WIN7用上最新版Chrome

1.下载WIN10最新版Chrome的离线安装包 谷歌浏览器 Chrome 最新版离线安装包下载地址 v123.0.6312.123 - 每日自动更新 | 异次元软件 文件名称:123.0.6312.123_chrome_installer.exe。 123.0.6312.123_chrome_installer.exe 文件右键解压缩得到 chrome.7z&#x…

Elasticsearch:下载、启动和账号密码登录

因为我的电脑是 window,以下都是以 window 环境举例。 一、下载 Elasticsearch 是使用 java 开发的,且 7.8 版本的 ES 需要 JDK 版本 1.8 以上,安装前注意java环境的准备。 官网地址:https://www.elastic.co/cn/ 下载地址&#xf…

第十五届蓝桥杯题解-好数

题目大意&#xff1a;一个数的低位为奇数&#xff0c;次低位为偶数&#xff0c;以此类推的数成为好数&#xff0c;例如&#xff1a;1&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;9 给定一个n&#xff0c;求1-n所有好数的个数&#xff0c;n<1e7 思路&#xff1a;一…

Python 数学应用(四)

原文&#xff1a;zh.annas-archive.org/md5/123a7612a4e578f6816d36f968cfec22 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十一章&#xff1a;其他主题 在本章中&#xff0c;我们将讨论一些在本书前几章中没有涉及的主题。这些主题大多涉及不同的计算方式以及优…

Python也可以合并和拆分PDF,批量高效!

PDF是最方便的文档格式&#xff0c;可以在任何设备原样且无损的打开&#xff0c;但因为PDF不可编辑&#xff0c;所以很难去拆分合并。 知乎上也有人问&#xff0c;如何对PDF进行合并和拆分&#xff1f; 看很多回答推荐了各种PDF编辑器或者网站&#xff0c;确实方法比较多。 …

C++学习————第六天 (运算符重载 const成员 取地址)

这一篇我们来补齐上一天的 留下的三个默认成员函数 //上一天内容 &#xff1a; nullhttps://blog.csdn.net/island1314/article/details/137371086?spm1001.2014.3001.5502 1、重载 1.1 运算符重载 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊…