int / uint: Signed and unsigned integers of various sizes. Keywords uint8 to uint256 in steps of 8 (unsigned of 8 up to 256 bits) and int8 to int256. uint and int are aliases for uint256 and int256, respectively. 引用自here
int代表有符号的整型,也就是可以带负数
uint代表没有符号的整型,也就是从0开始的正整数
uint8 代表为2的8次方
uint256 代表为2的256次方
uint 默认为 uint256
int8 代表为-2的7次方到正2的7次方
int256 代表为-2的255次方,到正2的255次方;
int 默认为int256
comparisons: <=, <, ==, !=, >=, >
bit operator: &, |, ^,~
arithmetic operator: +, -, *, /, %, **, <<, >>
pragma solidity ^0.4.4;
contract DemoTypes {
function f(uint a) returns (uint b)
{
uint result = a * 8;
return result;
}
}
contract DemoTypes {
function f2(int width, int height) returns (int square) {
if (width < 0 || height < 0) throw;
int result = width * height;
return result;
}
}
contract DemoTypes {
/*输入N,计算N的阶乘,循环实现*/
function f3(uint n) returns (uint jiecheng) {
if (n == 0) throw; uint result = 1;
for (uint i=1; i<=n; i++) {
result *= i;
}
return result;
}
}
contract DemoTypes {
/*计算从1到N的求和*/
function f4(uint n) returns (uint sum) {
if (n == 0) throw; uint result = 0;
for (uint i=0; i<=n; i++) {
result +=i;
}
return result;
}
}
所以我们可以在上面的f4()
方法的下方,添加一部分测试代码代码如下:
contract DemoTypes2 {
uint public testResult;
/*计算从1到N的求和*/
function f4(uint n) returns (uint sum) {
if (n == 0) throw; uint result = 0;
for (uint i=0; i<=n; i++) {
result +=i;
}
return result;
}
function g() {
testResult = f4(3);
}
}
增加了一个可观察的变量uint public testResult;
, 然后在function g()中调用f4()
方法,这个时候可以通过在browser-solidity中观察变量testResult即可。
—————————————————————————————————
uint[] a;
int[] b;
length
和 push
。
pragma solidity ^0.4.8;
contract DemoTypes4 {
uint[] public intArray;
function add(uint a) {
intArray.push(a);
}
}
上面代码很简单,定义了一个public的int数组intArray
, 以及一个方法add(uint a)
, 在browser-solidity中我们可以先add(111)
& add(222)
. 然后调用intArray[0] & intArray[1],来查看结果,
结果显示如下图所示:
该合约在Mist也一样部署,也可以通过查看变量intArray
来查看数值。
lengthOf()
contract DemoTypes4 {
uint[] public intArray;
function add(uint a) {
intArray.push(a);
}
function lengthOf() returns (uint len) {
uint result = intArray.length;
return result;
}
}
intArray
的length
. 期望值是2个,我们可以通过browser-solidity来查看结果:update
& valueOf
通过增加valueOf
& update
我们实现了对数组类型的修改 和 查看 功能。CRUD至此已完成了CRU,只缺个Delete了。
代码如下:
contract DemoTypes4 {
uint[] intArray;
function add(uint a) {
intArray.push(a);
}
function lengthOf() returns (uint len) {
uint result = intArray.length;
return result;
}
function update(uint _index, uint _value) {
intArray[_index] = _value;
}
function valueOf(uint _index) returns (uint _value) {
uint result = intArray[_index];
return result;
}
}
该代码在browser-solidity中执行通过,限于篇幅,就不贴截图了。
Solidity里面没有对数组类型提供天生的delete操作,因此delete操作写起来略为复杂。
具体代码如下:
function deleteAt(uint _index) {
uint len=intArray.length;
if (_index >= len) return;
for (uint i = _index; i<len-1; i++){
intArray[i] = intArray[i+1];
}
delete intArray[len-1];
intArray.length--;
}
pragma solidity ^0.4.8;
contract DemoTypes4 {
uint[] intArray;
function add(uint a) {
intArray.push(a);
}
function lengthOf() returns (uint len) {
uint result = intArray.length;
return result;
}
function update(uint _index, uint _value) {
intArray[_index] = _value;
}
function valueOf(uint _index) returns (uint _value) {
uint result = intArray[_index];
return result;
}
function deleteAt(uint _index) {
uint len=intArray.length;
if (_index >= len) return;
for (uint i = _index; i<len-1; i++){
intArray[i] = intArray[i+1];
}
delete intArray[len-1];
intArray.length--;
}
}