仓颉 – 标识符 , 变量以及数据类型
一. 标识符
1. 普通标识符
- 由数字 , 字母 , 下划线构成 – cangjie , cangjie_2024
- 由英文字母开头,后接零至多个英文字母、数字或下划线。
- 由一至多个下划线开头,后接一个英文字母,最后可接零至多个英文字母、数字或下划线。 cangjie_c919_o_o
- 不能由关键字作为普通标识符
2.原始标识符
除此之外仓颉还提供了另一种标识符叫做原始标识符主要用于将关键字作为标识符的场景
if
while
二. 变量
1. 可变变量
通过关键字var声明
var 变量名 : 变量类型 = 值
var name : String = "cangjie"
var age : Int64 = 18
name = "jixu"
age = 19
2.不可变变量
通过let 关键字let声明
let 变量名 : 变量类型 = 值
let str : String = "你好"
ps: 当不可变变量等号右边为表达式的时候运行时求值
3. 常量
通过const关键字let声明
const 常量名 : 常量类型 = 值
const name : String = "jixu"
ps: 当常量右边为表达式时编译的时候求职
三. 数据类型
1. 什么是类型
类型就像一份协议,规定了一块数据的组织结构及相应的解析/操作方发
相同的数据,赋予不同的类型/协议,解析和操作结果并不相同
如果程序中传递的变量不具有类型信息,就可能导致数据误读/误操作等问题,产生预期之外的运行结果。
仓颉编程语言是静态强类型语言,具有完备的类型系统,在编译时通过类型检查避免数据误用问题,并提升代码的可维护性。
2. 基础数据类型
1. 整型
仓颉的整型由Int8 , Int16 , Int32 , Int64 , Uint8 , Uint16 , Uint32 , Uint64 构成
有符号整型(Signed Integers)
int8:占用 8 位(1 字节)的存储空间,表示范围从 -128 到 127。
int16:占用 16 位(2 字节)的存储空间,表示范围从 -32,768 到 32,767。
int32:占用 32 位(4 字节)的存储空间,表示范围从 -2,147,483,648 到 2,147,483,647。
int64:占用 64 位(8 字节)的存储空间,表示范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
有符号整型可以表示正数、负数和零。它们使用二进制补码表示法来存储负数。
无符号整型(Unsigned Integers)
uint8:占用 8 位(1 字节)的存储空间,表示范围从 0 到 255。
uint16:占用 16 位(2 字节)的存储空间,表示范围从 0 到 65,535。
uint32:占用 32 位(4 字节)的存储空间,表示范围从 0 到 4,294,967,295。
uint64:占用 64 位(8 字节)的存储空间,表示范围从 0 到 18,446,744,073,709,551,615。
无符号整型只能表示非负整数(包括零)。由于它们不需要表示负数,因此它们的数值范围比相同位数的有符号整型大一倍。
使用场景
选择哪种整型数据类型取决于你的具体需求,包括你预期的数据范围、是否需要表示负数以及内存使用的考虑。
在处理大量数据时,较小的数据类型(如 int8 或 uint8)可以显著节省内存和存储空间。
在需要确保数值不会超出特定范围时,使用固定大小的整型(如 int32 或 uint32)可以提供额外的安全保障。
在进行跨平台或跨语言开发时,了解不同系统或语言对整型数据类型的支持情况也很重要。例如,一些较老的系统或语言可能不支持 int64 或 uint64,或者它们的实现方式可能与现代系统有所不同。
var age : Int64 = 18
var size : UInt = 8
2. 浮点数类型
仓颉的浮点型由Float16 , Float32 , Float64 构成
var a : Float16 = 1.33
3. 布尔类型
仓颉的布尔类型由Bool 构成
var b : Bool = true
4. 字符类型
仓颉的字符类型由Rune构成
let e:Rune= '仓'
5. 字符串类型
仓颉的字符串类型由String构成
字符串类型提供了使用+进行拼接 . 以及"“” “”"三个双引号用来保留原来的文本格式
var name : String = "仓颉"
// 字符串拼接
var c : String = "你好" + "仓颉"
// 保留原格式
var d : String = """
若到江南赶上春,
千万和春住
"""