solidity数据类型
1.Bool类型
取值:true/false
运算符:! && || == !=
2.Integer整型
uint8-uint256
int8-int256
uint == uint256
int == int256
运算符:< <= ==
位运算:& | ^(异或) ~(位取反)
算数运算:+,-,* ,/,%,**,<<,>>
constant 关键字的函数不会修改状态变量的值
使用var,var a = 100; 【a为uint8,因为uint8足够存储100】 将第一次复制的类型作为a的类型。
function testUint() constant returns(uint8){ var a=100; return a; }
因此,对于下面的代码是错误的:i初始化时为uint8
function add() constant returns(uint){ uint a=0; for(var i=0;i<=256;i++){ a+=1; } return a; }
3. address地址类型【钱包地址】
地址长度为20字节,即160bit,40位16进制数。因此可以使用uint160
pragma solidity ^0.4.4; contract AddrTest{ address _owner; function setOwner(){ _owner = 0x4def79be8ccf285bbd6d59c6e3f6f6680d150d1d; } function getOwner()constant returns(address){ return _owner; }
function getOwner()constant returns(uint160){
return uint160(_owner); //uint160: 444932772883299463689308144911204261155420048669
}
}
address和uint160可以相互转化;
msg.sender:钱包地址
msg.sender是可以变的,他是Account地址