Data Types in Solidity

In the Solidity programming languages, data types for variables can be classified into two types: value types and reference types. The difference is that value types actually store a value, while reference types store just a reference to where the data is actually stored. It is therefore important to be more careful with reference data types. 

Value Data Types in Solidity

The code below shows some examples of data types used in a smart-contract written in solidity. // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; contract ValueDataTypes { bool public boo1 = true; bool public boo2 = false; uint8 public u8 = 1; uint public u256 = 444; int8 public i8 = -1; int public i256 = 444; address public addr = 0x0000000000000000000000000000000000000000; }

Reference Data Types in Solidity

Reference data types, don't store the actual value instead they store just a reference to the actual data location. Reference data types in Solidity are array, struct and mapping. There are three options where the reference types can be stored: memory, storage, and calldata. With reference data types it is possible, that two different variables point to the same location and if one is changed the change affects the other variable as well. It is important to be more careful with these types, otherwise, unexpected behavior could occur.

Default Values in Solidity

If a variable is declared without assigning a value to it, the variable has a default value depending on its data type. The following table gives an overview over the default values for each data type.
Data Type Description Default Value
bool boolean false
uint unsigned integer 0
int integer 0
address ethereum address 0x0000000000000000000000000000000000000000
bytes32 fixed-size byte array 0x0000000000000000000000000000000000000000000000000000000000000000
string string (empty)



Click to jump to section