【链块技术39期】智能合约基础语言(三)——Solidity变量类型:值类型

原文链接:智能合约基础语言(三):Solidity变量类型:值类型(下)

 

一、目录

☛值类型和引用类型的区别

☛布尔类型(bool)

☛整型(int、uint)

☛定点型小数(fixed、ufixed)

☛地址类型(address)

☛定长字节数组(bytes1,bytes2,bytes3,...,bytes32)

☛有理数和整数字面量

☛地址字面量

☛字符串字面量

☛十六进制字面量(hex)

☛枚举类型(enum)

二、值类型和引用类型的区别

Solidity变量类型分为两大类——值类型、引用类型

值类型:变量的存储空间存的是变量的数据
引用类型:变量的存储空间存的是变量数据所在的存储空间的地址

注意:值传递和引用传递。值类型的变量,赋值是简单的值传递,即两个变量占有独立的存储区域。引用类型赋值传递的是变量的引用,即两个变量指向同一存储区域

三、值类型——布尔(bool)

bool: 只有两种值true和false(默认false)。

3.1 支持的运算符:

▪ ! 逻辑非

▪ && 逻辑与

▪ || 逻辑或

▪ == 等于

▪ != 不等于

3.2 实例

bool a = true;
bool b = !a;

// a == b -> false
// a != b -> true
// a || b -> true
// a && b -> false

逻辑与(&&)和逻辑或(||)都遵循短路原则,即如果根据前一个表达式可以得到运算结果,则不会执行后面的表达式。

四、值类型——整型(int/uint)

▪ int(m):有符号整数

▪ uint(m):无符号整数

▪ m关键字取值为8~256步幅是8 ,表示在内存中2进制的位数,控制了整数的取值范围,不写默认为256。

▪ uint和int分别是uint256和int256的别名。

▪ m一定要是8的整数倍

4.1 操作

 

比较:<=,<,==,!=,>=,>(结果为bool)
位操作符:&,|,^(按位异或),~(按位取反)
算术运算符:+, - ,一元 - ,一元 +,*,/,%(取余),**(幂),<<(左移),>>(右移)

注意:

▪ 除法总是截断,但如果两个运算符都是常量(或常量表达式),则它不会截断。

▪ 除零和取余有零引发异常。

▪ 左移几位和右移几位相当于乘以或者除以2的几次方,如果参数为负数的话会引发异常。

▪ 在Solidity中不支持八进制。

五、值类型——定点数

5.1 定点小数

到现在为止还没有被solidity完全支持,可以被声明,不能被赋值也不能用定点数赋值fixed/ufixed 各种大小的有符号和无符号定点小数,ufixedMxN and fixedMxN关键字M代表定点数占用的二进制位数,N代表定点数能表示多少位小数,M必须是8-256之间的,以8为步幅的整数,N必须是0-80之间的整数,ufixed 和fixed 默认为ufixed128x18和fixed128x18。

▪ 比较运算:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值