第三章 C#中的变量

第三章 C#中的变量 一、变量的定义一变量的定义变量是用来存储一个数据的内存区域里面存储的数据可以变化。二变量的格式数据类型 变量名 初始值实例 int score 100三对变量定义的理解1、理解可以把变量看作是给计算机内存里的一块“小盒子”贴标签这个盒子用来装数据标签就是变量名方便后续查找和使用里面的数据。核心要素通俗理解变量名给小盒子起的名字要符合C#命名规则如不能数字开头、age、studentName。标识符数据类型规定小盒子能装什么类型的数据如整数、小数、文字、int 整数、string 文本。决定变量大小和布局赋值往小盒子里放数据的操作。二、变量的数据类型一整数类型类型内存占用 (Byte)符号描述范围默认值byte1无符号无符号字节0 ~ 2⁸ − 10sbyte1有符号有符号字节−2⁷ ~ 2⁷ − 10ushort2无符号无符号短整型0 ~ 2¹⁶ − 10short2有符号有符号短整型−2¹⁵ ~ 2¹⁵ − 10uint4无符号无符号整型0 ~ 2³² − 10int默认4有符号有符号整型−2³¹ ~ 2³¹ − 10ulong8无符号无符号长整型0 ~ 2⁶⁴ − 10long8有符号有符号长整型−2⁶³ ~ 2⁶³ − 10L1、「s」和「u」是什么意思①s signed有符号可以存 0的数 也能存负数。②u unsigned无符号只能存 0的数 不能存负数。例子 using System; class Program { static void Main() { // 1. byte 无符号字节1字节默认值 0 byte b1 0; // 默认值 byte b2 200; Console.WriteLine($byte{b1}{b2}); // 2. sbyte 有符号字节1字节默认值 0 sbyte sb1 0; // 默认值 sbyte sb2 -100; Console.WriteLine($sbyte{sb1}{sb2}); // 3. ushort 无符号短整型2字节默认值 0 ushort us1 0; // 默认值 ushort us2 60000; Console.WriteLine($ushort{us1}{us2}); // 4. short 有符号短整型2字节默认值 0 short s1 0; // 默认值 short s2 -30000; Console.WriteLine($short{s1}{s2}); // 5. uint 无符号整型4字节默认值 0 uint ui1 0; // 默认值 uint ui2 3000000000; Console.WriteLine($uint{ui1}{ui2}); // 6. int 有符号整型默认整型4字节默认值 0 int i1 0; // 默认值 int i2 100000; Console.WriteLine($int{i1}{i2}); // 7. ulong 无符号长整型8字节默认值 0 ulong ul1 0; // 默认值 ulong ul2 9000000000000000000; Console.WriteLine($ulong{ul1}{ul2}); // 8. long 有符号长整型8字节默认值 0L long l1 0L; // 默认值可加后缀L long l2 -8000000000000000000L; Console.WriteLine($long{l1}{l2}); } }二浮点数类型类型内存精度特点取值范围后缀典型场景float4 字节单精度约 6-7 位有效数字±3.4×10³⁸F游戏开发、图形渲染、性能优先double8 字节双精度约 15-16 位有效数字±1.79×10³⁰⁸D绝大多数常规开发默认浮点类型decimal16 字节十进制精确存储28-29 位有效数字±7.9×10²⁸ / 10⁰ ~ 10²⁸M财务、金融、货币计算必须用它注意精度问题精度问题 using System; class Test { static void Main() { // float/double 存在精度丢失 double a 0.1; double b 0.2; Console.WriteLine(0.1 0.2 (a b)); // 输出 0.30000000000000004 // decimal 计算精确无误差 decimal c 0.1M; decimal d 0.2M; Console.WriteLine(0.1 0.2 (c d)); // 输出 0.3 } }例子 using System; class Program { static void Main() { // 1. float 单精度浮点后缀 F/f float gameSpeed 6.8F; // 游戏角色移动速度 float objectSize 2.5f; // 物体尺寸 Console.WriteLine(float 示例{0} , {1}, gameSpeed, objectSize); // 2. double 双精度浮点默认浮点类型后缀 D/d 可省略 double pi 3.1415926; // 圆周率 double height 1.78D; // 身高 Console.WriteLine(double 示例{0} , {1}, pi, height); // 3. decimal 高精度十进制财务专用后缀 M/m 必须写 decimal price 59.99M; // 商品价格 decimal salary 6800.50m; // 工资 Console.WriteLine(decimal 示例{0} , {1}, price, salary); } }三字符与布尔类型类型内存占用描述范围字面值示例char2 字节字符类型存储单个 字符0 ~ 2¹⁶ - 1\0bool1 字节布尔类型一般用来表示真或者假true/falsetrue/falsestring不定根据字符数字符串类型引用类型存文本无固定范围hello例子 using System; class Program { static void Main() { // char 字符类型 char emptyChar \0; // 空字符默认值 char letter B; char numChar 9; char chinese 文; Console.WriteLine(char 示例{0}、{1}、{2}, letter, numChar, chinese); // 字符转对应编码值 Console.WriteLine(字符B的编码值 (int)letter); // bool 布尔类型 bool isOpen true; bool isFinish false; Console.WriteLine(\nbool 示例{0}、{1}, isOpen, isFinish); // 条件判断使用 if (isOpen) { Console.WriteLine(状态为开启); } // string 字符串类型 string emptyStr ; // 空字符串 string str1 hello; string str2 你好编程; Console.WriteLine(\nstring 示例{0}、{1}, str1, str2); // 字符串拼接 string newStr str1 str2; Console.WriteLine(拼接结果 newStr); } }四类型转换一、隐式类型转换1、隐式类型转换定义把一个取值范围小的数值或者变量赋值给另一个取值范围大的。2、类型转换的细节就是转换各种变量里面所存储的那个数值变量本身没发生变化。3、隐式类型转换的规则无符号数据不能接纳有符号数据。4、隐式类型转换的关系5、运算过程当中的隐式类型转换1小的数据类型需要先转化为大数据类型再进行计算结果类型为大数据类型。2byte short char变量进行计算的时候都会预先转化为int类型参与计算。例子 using System; class Program { static void Main() { // 1. byte → int byte num1 200; int num2 num1; Console.WriteLine(byte 自动转 int num2); // 2. short → int short num3 10000; int num4 num3; Console.WriteLine(short 自动转 int num4); // 3. int → long int num5 100; long num6 num5; Console.WriteLine(int 自动转 long num6); // 4. float → double float num7 1.23F; double num8 num7; Console.WriteLine(float 自动转 double num8); } }二、显示类型转换1、显示类型转换含义:将取值范围较大的数值或者变量赋值给一个取值范围较小的变量。注意不开以直接赋值强制类型转换。。2、显示类型转换格式:目标数据类型 变量名(目标数据类型)需要转换的数据或者变量。double a 99.99; int b (int)a; // b 993、显示类型转换要注意:浮点数转化为整数将小数部分直接抛弃(截断)。double c -5.66; int d (int)c; // d -5小数直接丢4、数据的截断与歧义1数据的截断的核心是大整数类型向小整数类型转换时数据有可能被截断。2数据的歧义的核心是大空间给到小空间变量数据只能给到一部分从而导致数据含义的改变。与数据表达的含义不一样。(3)使用convert类进行显示类型转换①convert类进行显示类型转换格式的格式目标类型 变量名 Convert.To目标类型(源值);int n Convert.Toint32(‘a’);三、变量的作用域一作用域就是 ”{ } “的范围。二作用域分为1、局部变量在方法中声明的变量。2、类变量在类里面的变量。