bool类型
true 和 false
运算符:
! | 逻辑非 |
&& | 逻辑与 |
== | 等于 |
|| | 逻辑或 |
!= | 不等于 |
代码示例:
pragma solidity ^0.4.4;
contract Test {
uint a;
uint b;
bool c;
function Test() {
a = 100;
b = 200;
c = true;
}
//! 逻辑非
function fei() constant returns (bool) {
return (!c);
}
//&& 逻辑与
//== 判断是否等于,返回bool类型
function luojiyu() constant returns (bool) {
return a == b && c;
}
// || 逻辑或
// != 不等于,返回bool类型
function luojihuo() constant returns (bool) {
return a != b || c;
}
}
运行结果:
整型
int8 int16 Int24 ....int256
uint8 uint16 uint24....uint256
int默认int256,uint默认uint256。
int表示有符号,有正负之分。uint表示无符号,只有0和正数
int8的范围为11111111~0111111,第一个1或0表示正负号。int8的范围为-127~127
uint8的范围为00000000~11111111,表示0~255。(无正负号)
Var字符
pragma solidity ^0.4.4;
contract Test {
function testVar() constant returns (uint8) {
uint8 a = 100;
var b = a;//var 的类型由第一次赋值的类型确定。
return b;
}
function testVar1() constant returns (uint) {
uint a;
for(uint8 i=0; i<255; i++){ //i<=255会运行错误,出现溢出。
a = i;
}
return a;
}
}
说明:var 的类型由第一次赋值的类型确定。
支持的运算符
比较云算法:<= < == != >= >
pragma solidity ^0.4.4;
contract Test {
uint a;
uint b;
function Test() {
a = 100;
b = 120;
}
// <= < == != >= >
function test1() constant returns (bool) {
return a <= b;
}
function test2() constant returns (bool) {
return a < b;
}
function test3() constant returns (bool) {
return a == b;
}
function test4() constant returns (bool) {
return a != b;
}
function test5() constant returns (bool) {
return a >= b;
}
function test6() constant returns (bool) {
return a > b;
}
}
运行结果
位运算符:& 与,| 或,^ 异或,~ 非
pragma solidity ^0.4.4;
contract Test {
uint8 a;
uint8 b;
function Test() {
a = 5; //0000 0101
b = 8; //0000 1000
}
// & 与,| 或,^ 异或,~ 非
// & 遇0则为0,
function test1() constant returns (uint8) {
return a & b; //0000 0000 =0
}
// | 遇1则为1,
function test2() constant returns (uint8) {
return a | b; //0000 1101 =13
}
// ^ 相同为0,不同为1
function test3() constant returns (uint8) {
return a ^ b; //0000 1101 =13
}
// ~ 取反。0变1,1变0。
function test4() constant returns (uint8) {
return ~ b; // 1111 0111 =247
}
}
数学运算符:+,-,一元运算符:+,*,/,(%求余),(**次方),(<< 左移),(>> 右移)。
pragma solidity ^0.4.4;
contract Test {
uint8 a;
uint8 b;
function Test() {
a = 5; // 0000 0101
b = 3;
}
// +,-,一元运算符:+,*,/,(%求余)
function test1() constant returns (uint8) {
return a + b; // 8
}
function test2() constant returns (uint8) {
return a - b; // 2
}
function test3() constant returns (uint8) {
return a * b; // 15
}
function test4() constant returns (uint8) {
return a / b; // 1
}
function test5() constant returns (uint8) {
return a % b; // 2
}
function test6() constant returns (uint8) {
return a ** b; // 125
}
function test7() constant returns (uint8) {
return a << 2; // 0001 0100 =20
}
function test8() constant returns (uint8) {
return a >> 2; // 0000 0001 =1
}
}
solidify目前没有支持double/float类型,如果5/3会得到1,即无条件舍去。