ZetCode

FreeBasic Short 关键字

最后修改日期:2025 年 6 月 16 日

FreeBasic 的 Short 关键字表示一个 16 位有符号整数数据类型。它可以存储从 -32,768 到 32,767 的整数。当内存节省很重要时,Short 整数很有用。

基本定义

在 FreeBasic 中,Short 是一种数值数据类型,占用 2 字节(16 位)内存。它默认是有符号的,这意味着它可以表示正数和负数。

Short 类型非常适合需要存储小型整数并希望最大限度地减少内存使用的情况。它常用于空间优化很重要的数组和结构中。

声明 Short 变量

此示例显示了如何声明和初始化 Short 变量。

short_declare.bas
Dim smallNumber As Short
Dim temperature As Short = -15
Dim itemCount As Short = 25000

Print "smallNumber: "; smallNumber
Print "temperature: "; temperature
Print "itemCount: "; itemCount

在这里,我们声明了三个 Short 变量。第一个未初始化,包含一个未定义的值。其他两个分别设置为 -15 和 25000。Short 变量可以存储从 -32,768 到 32,767 的值。

Short 算术运算

Short 变量可以参与所有标准的算术运算。

short_arithmetic.bas
Dim a As Short = 15000
Dim b As Short = 20000
Dim result As Integer

result = a + b
Print "Sum: "; result

result = b - a
Print "Difference: "; result

result = a * 2
Print "Product: "; result

result = b \ 10
Print "Integer division: "; result

这演示了 Short 值的算术运算。请注意,可能需要将结果存储在较大的类型(如 Integer)中以避免溢出。反斜杠运算符执行整数除法。

数组中的 Short

在存储大量小型整数时,Short 数组在内存方面效率很高。

short_array.bas
Dim scores(1 To 5) As Short
scores(1) = 85
scores(2) = 92
scores(3) = 78
scores(4) = 90
scores(5) = 88

Dim total As Integer = 0
For i As Short = 1 To 5
    total += scores(i)
Next

Print "Average score: "; total \ 5

此示例创建了一个 Short 值数组来存储测试分数。与使用 Integer 相比,使用 Short 作为数组和循环计数器可以节省内存。总和存储在 Integer 中以防止溢出。

带类型后缀的 Short

FreeBasic 允许使用 % 后缀来声明 Short 变量。

short_suffix.bas
Dim smallNum% = 12345
Dim bigNum As Integer = 40000

Print "smallNum% type: "; TypeName(smallNum%)
Print "bigNum type: "; TypeName(bigNum)

' This would cause overflow
' smallNum% = bigNum

% 后缀是声明 Short 变量的简写。TypeName 函数显示变量类型。请注意,赋给 Short 无法容纳的较大值会导致溢出。

Short 范围检查

确保值保持在 Short 范围之内很重要。

short_range.bas
Dim maxShort As Short = 32767
Dim minShort As Short = -32768

Print "Max Short: "; maxShort
Print "Min Short: "; minShort

' These would cause overflow
' maxShort += 1
' minShort -= 1

Print "Safe operations:"
maxShort = maxShort - 1
minShort = minShort + 1
Print "New max: "; maxShort
Print "New min: "; minShort

这演示了 Short 类型的限制。尝试超出这些限制会导致溢出。注释掉的行显示了应该避免的危险操作。

函数参数中的 Short

Short 可用于函数参数和返回值。

short_function.bas
Function SumShorts(a As Short, b As Short) As Short
    ' Important: Check for potential overflow
    If a > 0 And b > 0 And (a + b) < 0 Then
        Print "Warning: Possible overflow"
    End If
    Return a + b
End Function

Dim x As Short = 20000
Dim y As Short = 12000

Print "Sum: "; SumShorts(x, y)

此函数接受两个 Short 参数并返回它们的和作为 Short。溢出检查展示了处理有限范围类型时的良好实践。该函数在 Short 范围内正确工作。

Short 转换

FreeBasic 在 Short 和其他类型之间执行隐式和显式转换。

short_conversion.bas
Dim s As Short = 100
Dim i As Integer = 50000
Dim f As Single = 123.456

' Implicit conversion from Short to Integer
i = s
Print "Integer from Short: "; i

' Explicit conversion from Integer to Short
s = CShort(i \ 50)
Print "Short from Integer: "; s

' Explicit conversion from Single to Short
s = CShort(f)
Print "Short from Single: "; s

这显示了 Short 和其他类型之间的转换。CShort 显式转换为 Short,截断浮点值。隐式转换为较大的类型是安全的,但从较大的类型转换则有溢出的风险。

最佳实践

本教程通过实际示例介绍了 FreeBasic Short 关键字,展示了它在不同场景下的用法。

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 FreeBasic 教程