본문 바로가기
전공공부/블록체인공학

Solidity 데이터타입과 연산자(3)

by 으노으뇨 2021. 11. 5.
728x90
반응형
SMALL

연산자

연산자종류

총 6개 종류의 연산자가있다.

기존의 연산자와 유사하다.  예를들어 대입 연산자는 a = a + 1 를 a+=1 로 함축해서 대입시키는 것이다.

이 6가지에 대해 설명하겠다.


1. 산술연산자

+ 더하기
- 빼기
* 곲하기
/ 나누기
% 나머지
** 지수연산

예제

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;

contract Plus {

    function plus() public pure returns (uint) {
        uint a = 1;
        uint b = 2;
        return a + b * 2;
    }

    function  rest() public pure returns (uint) {
        return 4 % 3;
    }
}

산술연산을 통해 uint값에 넣어주는것이다.


2. 비교연산자

> 크다
>= 크거나 같다
< 작다
<= 작거나 같다
== 같다
!= 같지 않다

결과값은 ture /  false 가 나올 것이다.

예제

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;

contract Comparison {

    function com() public pure returns(bool) {
        uint a = 1;
        uint b = 2;
        return a >= b;
    }
}

리턴값은 불형으로 나오고 해당 값이 나온다.


3. 대입연산자

정의 : 왼쪽의 값(Left Value)를 포함하는 연산자

코드를 간결하게 사용할 수 있음

a = a + 1 -> a += 1
a = a - 1 -> a -= 1
a = a * 1 -> a *= 1
a = a / 1 -> a /= 1

예제

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;

contract Substitution {

    function subst() public pure returns(uint) {
        uint a =10;
        uint b =11;
        a += b;
        return a;
    }

}


4. 비트연산자

& AND (둘다참)
| OR (둘중 하나만 참이면 참)
^ XOR (계산하려는 식이 서로 다른 값을 가지고 있을때 1, 같을때 0)
~ NOT (반대)

예제

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;

contract Bitwise {

    function bit() public pure returns (uint) {
        uint a = 1;
        uint b = 2;
        return a & b;
    }
}

1과 2의 비트간의 연산이다. 

a를 비트로는 01 이다.

b를 비트로는 10 이다. 이걸 and연산으로 해보면 0과 0이 되어 결과같은 0이 된다.


5. 시프트 연산자

<< 왼쪽 시프트
>> 오른쪽 시프트

예제

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;

contract Shift {

    function shift() public pure returns (uint) {
        uint a =1;
        return a << 2;
    }
}

a=1이라고 선언을 했는데 이것은 2진수로 보면, 비트로 보면 

0 1 

이다.

이것을 왼쪽으로 2번가라고 했으니 

1 0 0 이 된다.

그럼 1 0 0 의 10진수의 값은 "4" 이니 리턴값은 4가 나온다.


6. 증감연산자

++ 증가
-- 감소

자바에서  for (int i = 0 ; i < 2; i ++){} 할때 그 증감연산자이다. 값을 하나씩 늘려가는!

예제

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;

contract Variation {
    function vari()public pure returns(uint){
        uint a = 1;
        a++;
        return a;
    }
    
}


상수

constant 키워드를 사용한다.

 

728x90
반응형
LIST

댓글