Skip to main content

WTF Solidity: 8. Initial Value

Time:
Best Score:

Recently, I have been revisiting Solidity, consolidating the finer details, and writing "WTF Solidity" tutorials for newbies.

Twitter: @0xAA_Science | @WTFAcademy_

Community: DiscordWechatWebsite wtf.academy

Codes and tutorials are open source on GitHub: github.com/AmazingAng/WTFSolidity


Initial values of variables

In Solidity, variables declared but not assigned have their initial/default values. In this tutorial, we will introduce the initial values of common variable types.

Initial values of value types

  • boolean: false
  • string: ""
  • int: 0
  • uint: 0
  • enum: first element in enumeration
  • address: 0x0000000000000000000000000000000000000000 (or address(0))
  • function
    • internal: blank function
    • external: blank function

You can use getter function of public variables to confirm the above initial values:

    bool public _bool; // false
string public _string; // ""
int public _int; // 0
uint public _uint; // 0
address public _address; // 0x0000000000000000000000000000000000000000

enum ActionSet {Buy, Hold, Sell}
ActionSet public _enum; // first element 0

function fi() internal{} // internal blank function
function fe() external{} // external blank function

Initial values of reference types

  • mapping: a mapping which all members set to their default values

  • struct: a struct which all members set to their default values

  • array

    • dynamic array: []
    • static array(fixed-length): a static array where all members set to their default values.

You can use getter function of public variables to confirm initial values:

    // reference types
uint[8] public _staticArray; // a static array which all members set to their default values[0,0,0,0,0,0,0,0]
uint[] public _dynamicArray; // `[]`
mapping(uint => address) public _mapping; // a mapping which all members set to their default values
// a struct which all members set to their default values 0, 0
struct Student{
uint256 id;
uint256 score;
}
Student public student;

delete operator

delete a will change the value of variable a to its initial value.

    // delete operator
bool public _bool2 = true;
function d() external {
delete _bool2; // delete will make _bool2 change to default(false)
}

Verify on Remix

  • Deploy InitialValue.sol and check the initial values of the different types.

  • After using the delete operator, the value of the variables are reset to their initial values.

Summary

In this section, we introduced the initial values of variables in Solidity. When a variable is declared but not assigned, its value defaults to the initial value, which is equivalent as 0 represented in its type. The delete operator can reset the value of the variable to the initial value.