欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 【从零开始入门unity游戏开发之——C#篇03】变量和常量

【从零开始入门unity游戏开发之——C#篇03】变量和常量

2024/12/22 1:22:30 来源:https://blog.csdn.net/qq_36303853/article/details/144437341  浏览:    关键词:【从零开始入门unity游戏开发之——C#篇03】变量和常量

文章目录

  • 一、变量
    • 1、什么是变量?
    • 2、申明变量的固定写法
    • 3、变量的类型
      • 值和引用类型的区别
      • 无符号和有符号
      • 位——表示变量所占用的内存空间的大小
      • 范围——表示变量的取值范围
      • 取值范围和存储单位的关系
        • 为什么`byte`的范围是 0 到 255?
        • 为什么 `sbyte` 的范围是 -128 到 127?
    • 4、为什么要分这么多不同的变量类型?
    • 5、常用的变量类型
    • 6、变量命名规则
    • 7、float使用注意
  • 二、const常量
    • 1、什么是常量?
    • 2、常量的定义
    • 3、常量的特性
  • 专栏推荐
  • 完结

一、变量

1、什么是变量?

变量是计算机程序中的一种存储单元,它用于保存数据,并允许在程序中引用和修改这些数据。你可以把变量想象成“一个用来存储信息的小盒子”。在编程中,变量就是用来存放数据的地方,你可以在程序中给这个盒子命名,并将它装入不同的数据。之后,你可以随时查看、修改这个数据。

变量的本质就是存储数据的位置。它就像一张标签纸,你可以给它取个名字(变量名),然后写上信息(赋值),随时可以查看、修改这个信息(数据)。

比如

假设你有一个盒子(变量),叫做 age,它的作用就是存储一个年龄。你可以把数字 25 放进去,表示“年龄是 25”。然后,稍后你可以把它改成 30,表示年龄变了。

2、申明变量的固定写法

变量类型 变量名 = 初始值;

int i = 1;

当然我们也可以选择默认不赋初始值,后面再赋值,像这样

int i;i = 1;

一次性定义多个变量也可以简写

int a;
int b;//简写
int a, b;

3、变量的类型

C# 中的变量类型可以分为 值类型引用类型 两大类。

值类型

变量类型描述范围
byte无符号8位整数0 到 255
sbyte有符号8位整数-128 到 127
short有符号16位整数-32,768 到 32,767
ushort无符号16位整数0 到 65,535
int有符号32位整数-2,147,483,648 到 2,147,483,647
uint无符号32位整数0 到 4,294,967,295
long有符号64位整数-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
ulong无符号64位整数0 到 18,446,744,073,709,551,615
float32 位单精度浮点数±1.5 × 10^−45 到 ±3.4 × 10^38(精度约7位有效数字)
double64 位双精度浮点数±5.0 × 10^−324 到 ±1.7 × 10^308(精度约15–16位有效数字)
decimal128 位高精度小数±1.0 × 10^−28 到 ±7.9 × 10^28(精度约28–29位有效数字)
bool8 位布尔型truefalse
char16 位单一字符型Unicode字符(0 到 65,535)

引用类型

变量类型描述范围
string字符串任意长度的字符序列(理论上最多可达到 2GB)

值和引用类型的区别

这个内容比较复杂,我单独在下篇文章说明

无符号和有符号

  • 无符号表示能存储一定范围正数包括0的变量类型
  • 有符号表示能存储一定范围正负数包括0的变量类型

位——表示变量所占用的内存空间的大小

就是指定之前说的计算机中最小的数据存储单位——位(Bit),是指每种数据类型所占用的内存空间的大小。

注意:每种数据类型所占用的内存空间的大小是由 声明时 就已经决定的,与 赋值时的值的大小 无关。

例如

int smallNumber = 1;
int largeNumber = 10000;

在这两个例子中,smallNumber和largeNumber都是int类型的变量,它们分别存储了1和10000这两个值。但无论这两个变量的值是多少,它们在内存中都会各自占用4个字节(32位)的空间。

你可能会问为什么不根据数值大小动态分配空间?

如果你考虑过根据数值大小动态分配空间,这确实在某些情况下可以节省内存。然而,这样做会增加内存管理的复杂度,并可能降低程序的性能。固定大小的数据类型使得内存分配、读取和写入操作更加高效和简单。

范围——表示变量的取值范围

范围就是变量的取值范围,超出会报错

比如我定义一个byte类型变量,编辑器会报错
在这里插入图片描述
因为前面说了byte取值范围是0 到 255

取值范围和存储单位的关系

为什么byte的范围是 0 到 255?
  • 8位意味着它有 8 个二进制位(即 8 个数字),每个二进制位只能是 0 或 1。
  • 对于无符号整数,所有 8 位的组合都代表一个非负整数。因此,所有可能的二进制数值从 00000000 到 11111111 之间。

计算所有组合的范围:

  • 最小值:00000000(二进制)= 0(十进制)
  • 最大值:11111111(二进制)= 255(十进制)

所以,byte 类型的范围是从 0 到 255,包括这两个值。

为什么 sbyte 的范围是 -128 到 127?
  • 8位 表示它有 8 个二进制位,这意味着总共有 256 种可能的数值组合。
  • 由于 sbyte 是 有符号 类型,表示正负数需要用其中的一位来表示符号位(即正负号)。通常,符号位在最高位(最左边的位),其中:
    • 0 表示正数(或零)
    • 1 表示负数

计算 sbyte 的范围:

  • 最小值:由于最高位是符号位,最小值是 10000000(二进制),即 -128(十进制)。
  • 最大值:最大的正数是 01111111(二进制),即 127(十进制)。

因此,sbyte 类型的取值范围是 从 -128 到 127。

4、为什么要分这么多不同的变量类型?

C# 中不同类型的变量帮助程序在性能、类型安全、功能实现、可读性和可维护性等方面达到最佳平衡。合理选择数据类型不仅能提高程序的效率,还能让代码更具可读性,减少错误。因此,虽然 C# 中的类型众多,它们的存在是为了应对不同的编程需求,提供更加灵活、安全和高效的编程体验。

5、常用的变量类型

前面看到这么多变量类型要记,但是不用害怕,我们经常用的其实只有:
值类型:int float bool
引用类型:string

其他的基本都用不到,了解就行了

6、变量命名规则

  • 不能重名
  • 不能以数字开头
  • 不能使用程序关键字命名
  • 不能有特殊符号(下划线除外)

变量的命名其实是支持中文汉字的,比如

int 整数 = 100;

但是非常不建议的命名规则用汉字命名,有人喜欢用拼音其实我也不是很建议。虽然在特定的个人项目或局部环境中,使用汉字作为标识符可能短期内看起来更方便,但从长期来看,它带来的兼容性问题、可读性差、团队协作困难等问题,通常远远超过其带来的好处。因此,建议始终使用有意义的英语命名,遵循编程语言的命名规范,以确保代码的跨平台兼容性、可读性和可维护性。

7、float使用注意

C#小数默认是使用Double类型,所以直接赋值会报错,比如:
在这里插入图片描述
所以记得后面需要加上f才是float 类型

float f = 10.1f;

当然不是小数就可以不加f,但是为了统一规范,最好我们所有的float 类型变量赋值后面都加上f

float f1 = 0;
float f2 = -1;
float f3 = 1;float f4 = 0f;
float f5 = -1f;
float f6 = 1f;

二、const常量

1、什么是常量?

在 C# 中,常量(const)是一个值不可更改的变量。也就是说,一旦你为常量赋了初始值,这个值就不能再修改了。常量通常用于保存那些在程序运行时永远不变的值,比如数学常数(例如圆周率 π)或者配置参数。

2、常量的定义

在 C# 中,你可以通过关键字 const 来定义常量。例如:

const int MaxScore = 100;
const double Pi = 3.14159;
const string WelcomeMessage = "向宇的客栈";

在这些示例中:

  • MaxScore 是一个整数常量,值为 100。
  • Pi 是一个浮动常量,值为 3.14159。
  • WelcomeMessage 是一个字符串常量,值为 “向宇的客栈”。

其实可以简单的理解为在变量前面加一个const 关键字就是常量了

3、常量的特性

  • 不可修改:常量的值一旦赋值,就不能再更改。如果你尝试修改常量的值,编译器会报错。例如:
    在这里插入图片描述

  • 必须初始化:在定义常量时,你必须立即为其赋一个初始值。常量在声明时就要赋值,否则编译器会报错。例如:
    在这里插入图片描述

  • 只能是编译时常量:常量的值必须在编译时就已知,并且无法在程序运行时计算得出。例如:

    const int x = 5;
    const int y = x + 10;  // 可以,因为 5 和 10 在编译时已知
    

    但是,下面这种是不允许的:

    int z = 5;
    const int y = z + 10;  // 错误:常量值必须是编译时常量
    
  • 性能优化

    因为常量的值在编译时已确定,所以在运行时,C# 编译器会直接将常量值替换进代码中(通常是内联)。这有助于提升性能,尤其是当常量频繁使用时。


专栏推荐

地址
【从零开始入门unity游戏开发之——C#篇】
【从零开始入门unity游戏开发之——unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com