仓颉 -- 标识符 , 变量以及数据类型详解

news2024/9/25 11:12:33

仓颉 – 标识符 , 变量以及数据类型

一. 标识符

1. 普通标识符

  1. 由数字 , 字母 , 下划线构成 – cangjie , cangjie_2024
  2. 由英文字母开头,后接零至多个英文字母、数字或下划线。
  3. 由一至多个下划线开头,后接一个英文字母,最后可接零至多个英文字母、数字或下划线。 cangjie_c919_o_o
  4. 不能由关键字作为普通标识符

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 = """
        若到江南赶上春,
    千万和春住
            """

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

phpMyAdmin 漏洞复现教程

一.登陆 账号密码 是数据库的 二.日志文件拿到shell 在sql里执行命令 可以看到是关闭状态 我们再次执行命令 让它变成on 日志文件开启 再次执行上面的命令 可以看到已经开启了 然后我们更改日志保存路径 然后查看是否更改成功 显示 更改成功 然后我们插入一句话木马 访问一下…

完成订单业务

文章目录 概要整体架构流程技术细节小结 概要 完成订单是电子商务、外卖平台、在线零售等多个行业中的一项重要业务流程。这项功能允许商家或平台将订单状态更新为“已完成”,表明订单已经成功交付给客户。 需求分析以及接口设计 技术细节 1.Controller层: ApiOp…

C#类和结构体的区别

1、类class是引用类型,多个引用类型变量的值会互相影响。存储在堆(heap)上 2、结构体struct是值类型,多个值类型变量的值不会互相影响。存储在栈(stack)上 类结构关键字classstruct类型引用类型值类型存储…

Study--Oracle-07-ASM故障组管理(六)

一、ORACLE ASM提供的三冗余方式 1、三种模式:external、normal、high 一般情况下三种模式需要的最小磁盘组: external 1块 normal 3块 high 5块 2、外部冗余(external redundancy) 表示Oracle不帮你管理镜像&#xf…

计算机网络-http协议和https的加密原理

HTTP(HyperText Transfer Protocol,超文本传输协议)是用于在万维网(World Wide Web)上传输超文本的基础协议。它定义了客户端(通常是浏览器)和服务器之间的文本数据传输格式和规则。以下是HTTP的…

J030_TCP通信

一、需求描述 使用TCP协议进行通信 1.1 一发一收 1.1.1 Client package com.itheima.tcp1;import java.io.DataOutputStream; import java.io.OutputStream; import java.net.Socket;public class Client {public static void main(String[] args) throws Exception {//1、…

嵌入式初学-C语言-练习三

#部分题目可能在之前的博客中有&#xff0c;请谅解&#xff0c;保证常见题型均被发出# 1.计算n以内所有正奇数的和 ? n值通过键盘输入 代码&#xff1a; 1 /*2 需求&#xff1a;计算n以内所有正奇数的和 ? n值通过键盘输入3 */4 #include <stdio.h>5 6 int main()7 …

用手机剪辑视频素材从哪里找?用手机视频素材库分享

视频编辑是一门充满创意的艺术&#xff0c;无论是制作短片、广告还是个人Vlog&#xff0c;都离不开高质量的视频素材。如果自己拍摄的素材不能完全满足创作需求&#xff0c;或者需要更多样化的内容来丰富视频&#xff0c;那么优质的视频素材来源至关重要。下面推荐几个提供高品…

LinuxC++(8):GDB调试

下载gdb gdb需要使用yum下载 yum -y install gdb 编译注意 需要在后面加上 -g &#xff0c;证明是要给可调试文件。 开始调试 gdb函数名 修改主函数参数 set args //set args "小红" "小华" "爱你" 在linux中显示行号 在vi下&#xff0c;输入…

C++自定义接口类设计器之函数解析二

关键代码 // 解析为函数 bool FunctionCreator::parse(const QString& lineFunc) {auto trimFunc lineFunc.trimmed();auto list trimFunc.split(" ");bool bHasReturn false;// 返回值和函数名解析for (const auto& key : list) {auto trimKey key.trim…

麦田物语第十八天

系列文章目录 麦田物语第十八天 文章目录 系列文章目录一、(Editor)制作 [SceneName] Attribute 特性二、场景切换淡入淡出和动态 UI 显示一、(Editor)制作 [SceneName] Attribute 特性 在本节课我们编写Unity的特性Attribute来更好的完善我们项目,具体是什么呢,就是当…

一款简单且强大的免费开源图片压缩软件

图压是一款简单易用且功能强大的图片压缩工具&#xff0c;适用于Windows和macOS两大操作系统。它能够在几乎不损害图片清晰度的情况下&#xff0c;显著减小图片的体积&#xff0c;特别适合需要在网页、PPT、Word、PDF中使用的图片压缩。图压的操作界面简洁&#xff0c;用户可以…

Kettle同步数据时如何借助Shell通过SSH连接MySQL数据库

在实际开发中&#xff0c;经常会用到KettleSpoon来同步数据&#xff0c;比如&#xff1a;需要定时将MySQL库某张表前一天的数据同步到SQL Server&#xff08;MySQL&#xff09;库中等等。一般由于安全性都会提供基于秘钥的连接方式&#xff0c;这种情况下如何在Kettle中连接数据…

Wordpress建站问题记录

从一月到七月因为工作的情况没有进行太深入的开发,想着整理一下把做一个独立站把博客多个渠道发布一下,遇到几个问题在这里记录一下. 先写一下我的配置 系统: centos7 php: 7.4 wordpress: 6.6.1 mysql:8.0.6 1. HTTP 500 Internal 这个问题出现在我将wordpress的文件夹全部…

运维变革背景下的运维工具衍化探讨

在数字化转型的浪潮中&#xff0c;运维领域正经历着前所未有的变革。这一变革不仅重塑了业务形态&#xff0c;也对运维工具和运维组织模式产生了深远影响。随着基础设施云化、容器化、微服务化等技术的兴起&#xff0c;运维对象、运维流程、协同关系等各个方面都发生了深刻的变…

J.U.C 原子类之AtomicIntegerFieldUpdate

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

MySQL:数据库用户

数据库用户 在关系型数据库管理系统中&#xff0c;数据库用户&#xff08;USER&#xff09;是指具有特定权限和访问权限的登录账户。每个用户都有自己的用户名和密码&#xff0c;以便系统可以通过认证来识别他们的身份。数据库用户可以登录数据库&#xff0c;在其中执行各种类…

第二十天学习笔记2024.8.2

安装mysql 1.安装软件包 centos7 中安装 mysql 8.x_wffkg-CSDN博客 2.解压 tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3.卸载mariadb yum remove -y *mariadb* 4.安装&#xff08;缺什么依赖补什么&#xff09; mysql-community-server-8.0.33-1.el7.x86_64.rpm 5.…

APP逆向 day26unidbg下-pdd(anti)案例

一.前言 今天我们讲unidbg的下篇&#xff0c;也就是unidbg基础的最后一个部分&#xff0c;我们上节课也有补环境&#xff0c;比如补java环境&#xff0c;补安卓环境&#xff0c;这节课我们讲的肯定比这些都要难&#xff0c;我会给出一个之前讲过的案例&#xff0c;然后会讲一个…

如何建立与众不同的市场洞察能力【深度】

来源&#xff1a;战略研发领航 建立与众不同的市场洞察机制&#xff0c;展示了如何在组织中建立一种以数据和洞察为核心的文化&#xff0c;并通过4S周期&#xff08;架构、探查、塑造、成型&#xff09;的洞察工作方法论&#xff0c;指导领导者和团队在各个层级上进行更有效的思…