이전글
[솔리디티] 4. 생성자, 매개변수, 값 타입과 참조 타입, immutable
이전글 [솔리디티] 3. 자료형, 배열, 상수, 상태 변수 이전글 [솔리디티] 2. 리믹스 IDE 이전글 [솔리디티] 1. 솔리디티와 EVM 이전글 [솔리디티] 0. 들어가기 전에 앞으로 이어지는 솔리디티 글은 다음
kwjdnjs.tistory.com
연산자, 전역 변수, 단위
이번글에서는 솔리디티에서 사용되는 연산자, 전역 변수, 단위에 대해 알아보겠습니다.
1. 연산자
솔리디티에서 사용되는 더하기, 빼기, 곱하기, 나누기 등 기본적인 연산자는 다른 프로그래밍 언어와 동일합니다. 나눗셈의 경우 솔리디티에서는 실수형을 지원하지 않기 때문에 소수점 이하는 버리게 됩니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Operator {
uint8 public sum;
uint8 public difference;
uint8 public multiplication;
uint8 public division;
uint8 public remainder;
constructor(uint8 x, uint8 y) {
sum = x + y;
difference = x - y;
multiplication = x * y;
division = x / y;
remainder = x % y;
}
}
'**'으로 거듭제곱을 사용할 수 있습니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Operator {
uint8 public pow;
constructor(uint8 x, uint8 y) {
pow = x ** y;
}
}
복합 연산자와 전위 증감, 후위 증감 연산자를 사용할 수 있습니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Operator {
uint8 a = 0;
uint8 public b;
uint8 public c;
uint8 public d;
constructor(uint8 x) {
a += x;
b = ++a;
c = a++;
d = --a;
}
}
비트 단위 연산자도 다른 프로그래밍 언어와 유사합니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Operator {
uint8 public left;
uint8 public right;
uint8 public and;
uint8 public or;
uint8 public xor;
uint8 public not;
constructor(uint8 x, uint8 y) {
left = x << y;
right = x >> y;
and = x & y;
or = x | y;
xor = x ^ y;
not = ~x;
}
}
논리 연산자도 다른 프로그래밍 언어와 유사합니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Operator {
bool public and;
bool public or;
bool public not;
constructor(bool x, bool y) {
and = x && y;
or = x || y;
not = !x;
}
}
비교 연산자 역시 다른 프로그래밍 언어와 유사합니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Operator {
bool public eq;
bool public neq;
bool public gt;
bool public ge;
bool public lt;
bool public le;
constructor(uint8 x, uint8 y) {
eq = x == y;
neq = x != y;
gt = x > y;
ge = x >= y;
lt = x < y;
le = x <= y;
}
}
2. 전역 변수
솔리디티에는 블록체인 정보를 담고 있는 전역 변수가 존재합니다. 미리 정의된 전역 변수를 호출하여 블록체인과 관련된 값을 불러올 수 있습니다. 예를 들어 msg.sender를 이용하면 트랜잭션을 전송한 EOA의 주소를 얻을 수 있습니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Global {
address public a;
constructor() {
a = msg.sender;
}
}
3. 단위
마지막으로 솔리디티에서 지원하는 단위에 대해 알아보겠습니다.
솔리디티에서 사용하는 이더의 단위는 wei입니다. 다만 1 이더는 10^18 wei로 단위 차이가 큰 만큼 wei만으로 사용하기에는 어려움이 있습니다. 따라서 솔리디티에서는 단위 관련 키워드를 제공하여 여러 단위를 쉽게 사용할 수 있도록 하고 있습니다. 참고로 gwei는 10^9 wei입니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Unit {
uint public w = 1 wei;
uint public gw = 1 gwei;
uint public eth = 1 ether;
}
이외에도 솔리디티에서는 시간 관련 단위를 지원하고 있습니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Unit {
uint public sec = 1 seconds;
uint public min = 1 minutes;
uint public hour = 1 hours;
uint public day = 1 days;
uint public week = 1 weeks;
}
지금까지 연산자, 전역 변수, 단위에 대해 알아봤습니다. 감사합니다.
다음글
[솔리디티] 6. 함수, 가시성 지정자, 반환 값, 지역 변수
이전글 [솔리디티] 5. 연산자, 전역 변수, 단위 이전글 [솔리디티] 4. 생성자, 매개변수, 값 타입과 참조 타입, immutable 이전글 [솔리디티] 3. 자료형, 배열, 상수, 상태 변수 이전글 [솔리디티] 2. 리믹
kwjdnjs.tistory.com
'이더리움 > 솔리디티' 카테고리의 다른 글
[솔리디티] 7. view 함수, pure 함수, 모디파이어, 오버로딩 (0) | 2023.07.20 |
---|---|
[솔리디티] 6. 함수, 가시성 지정자, 반환 값, 지역 변수 (0) | 2023.07.17 |
[솔리디티] 4. 생성자, 매개변수, 값 타입과 참조 타입, immutable (0) | 2023.07.10 |
[솔리디티] 3. 자료형, 배열, 상수, 상태 변수 (0) | 2023.07.08 |
[솔리디티] 2. 리믹스 IDE (0) | 2023.07.06 |