整型
-
int / uint : 变长的整型,变量支持以8递增,支持从uint8到uint256,以及int8 到int 256
- uint和int默认uint256和int256
有符号整型int与无符号整型uint
- 无符号整型(uint)是计算机编程中的一种数值资料,只能表示0以及正数
- 有符号整型(int)可以表示任何规定范围内的正数
- uint 8: 范围为0~255
- int 8:范围为-127 ~ 127
运算
- solidity目前不支持double/float,如果是7/2会得到3,无条件舍去
- 除0抛异常
VAR
- 注意下面代码中var i <=255的话会报错,原因是var i =0
此时默认为uint8,所以当i循环到最大值时会出错。
- 如果改成uint16 i 则i<=255没问题
pragma solidity ^0.4.4;
//uint8 uint16 uint24....uint256
// int8 int16 int24 int32 ... int256
// int => int256
// uint => uint 256
// int8 -> 只有8位 11111111 ~ 01111111
// 第一位为符号 -(1+2+4+8+16+32+64)~ (1+2+4+8+16+32+64) 即 -127 ~ 127
// int16
// 1111111111111111 ~ 011111111111111
// uint8 -> 8
// 00000000 ~ 11111111 0~255
// uint8 0~255
contract Test {
// function testVar() returns (string) { 这是错的
function testVar() constant returns (uint8) {
uint8 a = 100;
var b = a;
return b;
}
function testVar1() constant returns (uint){
uint a;
for(var i =0;i < 255; i++){
a = i;
}
return a;
}
}
运算
pragma solidity ^0.4.4;
contract Test{
uint8 a;
function Test(){
a=8;
}
function qiumi(uint8 b)constant returns(uint8){
return a ** b; // a的b次方
}
function leftShift(uint8 b)constant returns(uint8){
return a << b;
// 0000 10000
// b =2
// 左移两位
// 0010 0000
// 64
}
//右移同上
}
字面量
- 不管实际能存储多少,计算过程中都可以随便计算
如uint8 只能存储到255,但是uint8 a = 11111111111111111111-11111111111111100 都是可以的。