做网站一般需要多少钱,搜索关键词排名优化软件,郑州app外包公司,常州app网站1. 基本数据类型
1.1 整数类型
Solidity支持有符号整数和无符号整数#xff0c;可以指定位数和范围。以下是一些整数类型的示例#xff1a;
int#xff1a;有符号整数#xff0c;可以是正数或负数。2#xff0c;-45#xff0c;2023
uint#xff1a;无符号整数#x…1. 基本数据类型
1.1 整数类型
Solidity支持有符号整数和无符号整数可以指定位数和范围。以下是一些整数类型的示例
int有符号整数可以是正数或负数。2-452023
uint无符号整数只能是正数。262022
int8、int16、int32、int64、int128有符号整数指定位数。
uint8、uint16、uint32、uint64、uint128无符号整数指定位数。这里的知识和普通的编程语言类似比如int8就代表最大能够存储一个8位的整数它的范围也就是-128 到127-2^7 到 2^7-1。其中一个比特用来表示符号正或负而其他7个比特用来表示整数值。这使得 int8 可以表示2^7128个不同的整数值分别对应于 -128 到 127。基础的知识就不再赘述了。为什么solidity中对于这种数据类型有着如此精细的划分呢因为在执行合约的时候是需要消耗gas的占用不用的为就意味着执行需要消耗不同的gas因此我们在使用的时候有必要根据自己存储的数字的范围来选取最合适的类型。
在remix上写一个合约 ctrl s编译后部署运行 public修饰的属性我们可以直接查看具体的修饰符后面详细说明。注意solidity中的hash操作authorHash keccak256(abi.encode(_name, _age, _sal));
1.2 布尔类型、地址类型
bool表示真或假true or false。这里就不用再多说了。
地址类型是不是和我们平时的c里面的地址一样呢并不是的在silidity中的地址类型address用于存储Ethereum地址。可以包含合约地址或外部账户地址。也就是这个地址类型就像是代表了我们的银行卡号。比如0xcb76b7d9a3458ef540ade6068dfe2f44e8ff745f
1.3 string、bytex、bytes、byte
string 用于文本数据bytex 用于固定大小的字节数组申明的时候在后面跟上数字表示位数而 bytes 用于动态大小的字节数组而byte就表示字节类型用于存储一个字节。这些数据类型在智能合约中用于存储和处理不同种类的数据根据需要选择适当的类型。需要注意的是合约中的数据存储和操作都需要谨慎处理以避免安全问题和不必要的消耗。
2. 复合类型
2.1 结构体
在Solidity中结构体Struct是一种用户自定义的数据类型用于将多个不同类型的变量组合成一个单一的数据结构。结构体允许你创建具有多个字段的自定义数据类型用于表示复杂的数据记录。
定义
struct Person {string name;uint age;
}实例化
Person public alice Person(Alice, 30);
Person public bob;
bob.name Bob;
bob.age 25;
2.2 数组
solidity的数组和其他语言的数组很类似Solidity 支持不同类型的数组包括静态数组和动态数组。静态数组具有固定大小而动态数组的大小可以在运行时动态分配。
静态数组type[size]其中 type 表示数组中元素的数据类型而 size 表示数组的大小。 // uint[5] public staticArray; // 具有5个整数元素的静态数组
动态数组的大小不是在声明时确定的可以在运行时动态添加或删除元素。它的声明形式为 type[]。 uint[] public dynamicArray; // 动态整数数组
数组支持各种操作和属性包括 .push() 用于在动态数组的末尾添加元素.length 用于获取数组的长度以及索引访问等。 动态数组的元素可以通过索引进行访问如 dynamicArray[0]
结构体数组
struct Person {string name;uint age;
}Person[] public people; // 包含自定义结构体的动态数组solidity也支持多维数组uint[][3] public twoDimensionalArray; // 二维整数数组包含3个子数组