Solidity 数据类型:有符号整数 (int) 和无符号整数 (uint)2025 年 5 月 27 日 | 阅读 8 分钟 Solidity 是一种高级的、面向对象的语言,用于在以太坊区块链网络上创建智能合约。 它是专门为利用 EVM 而开发的。由于它是一种静态类型编程语言,开发者必须在编译时声明智能合约变量的结构和数据类型。 如果您想精通 Solidity 语言,理解数据类型也很重要。Solidity 为智能合约提供了广泛的数据类型(例如整数、字符串、布尔值、数组、结构体等)。这有助于开发者满足更广泛的受众,应对各种类型的输入查询。 本教程将涵盖 Solidity 中的数据类型,并简要讨论常见的整数类型,即有符号 (int) 和无符号 (uint) 整数。 涵盖的主题
什么是 Solidity 数据类型?与其他的面向对象编程语言不同,Solidity 中的数据类型指定了存储在变量中的数据。 它提供了关于值或内存位置的引用地址的信息。Solidity 为智能合约提供了多种数据类型以供使用。这有助于它们满足更广泛的受众,应对各种类型的输入查询。 Solidity 数据类型大致可分为以下两类:
什么是值类型?Solidity 值类型是存储在给定内存空间中的变量,并在任何函数或子合约调用相同数据类型时传递复制的值。使用值类型变量的好处是它持有变量的副本,因此,如果程序员对复制的值进行了任何更改,也不会影响原始数据值。 在 Solidity 中,值类型大致分为八类。
让我们逐一快速了解它们。
什么是引用类型?Solidity 中的引用类型被定义为存储数据内存地址而不是实际数据的变量。值类型和引用类型之间的区别在于,值类型存储数据类型的值,而引用类型不存储任何值,而是指向目标数据的内存地址。 引用类型大致分为以下四类:
什么是符号整数 (int)?有符号整数使用 int 关键字在 Solidity 智能合约中定义。 顾名思义,它存储正值或负值,范围从 -2 的 255 次方到 2 的 255 次方 - 1。 Solidity 整数大小 整数数据值,可以存储多达 256 位整数或数据单元。例如:int8, int16, int32, int64, int128 和 int256。 语法 让我们在 Solidity 智能合约中理解符号整数的概念。 程序:在下面的示例中,我们声明了一个名为 SignedIntegerExample1 的智能合约,以展示符号整数的概念以及如何在 Solidity 智能合约中实现它。 输出 ![]() 说明 仅当您希望变量具有负值时才使用符号整数。因为符号整数在 Solidity 中占用更多空间,所以在以太坊区块链网络上部署智能合约时会消耗更多的 Gas 费。 什么是无符号整数 (uint)?无符号整数使用 int 关键字在 Solidity 智能合约中定义。 它与符号整数相反,因为它存储一个大于或等于零的整数值,范围从 0 到 2 的 255 次方 - 1。它比符号整数占用更少的存储空间。 语法 程序 1:在下面的示例中,我们声明了一个名为 UnsignedIntegerExample1 的智能合约,以展示无符号整数 (unit) 的概念以及如何在 Solidity 智能合约中实现它。 输出 ![]() 程序 2:在下面的示例中,我们声明了一个名为 UnsignedIntegerExample2 的智能合约,以展示无符号整数 (unit) 的概念,并让我们看看如果我们为无符号数据类型传递一个负数会发生什么。 输出 ![]() 说明 结果是,如果您使用无符号数据类型传递负值,它将引发类型错误。 符号整数和无符号整数的区别符号整数 (int) 和无符号整数之间的区别如下表所示:
结论深入理解 Solidity 数据类型、符号整数和无符号整数至关重要,因为它有助于开发者编写高效且易于阅读的智能合约。这使得您的代码更有效率,因为通过这些细节,编译器可以轻松地关联分配给特定变量(如整数或数组)的内存量和类型。它还有助于管理区块链 Gas,因为用户现在会根据您的变量的大小和类型谨慎地输入或选择单位。在本教程中,我们涵盖了所有细节和示例。请继续练习! |
我们请求您订阅我们的新闻通讯以获取最新更新。