【问题标题】:Which variables can be referred to as flag variables?哪些变量可以称为标志变量?
【发布时间】:2011-02-15 16:01:11
【问题描述】:

我时不时在变量的上下文中遇到flag 一词,我对此有自己的理解,但我仍然希望看到一个明确的定义。

【问题讨论】:

    标签: language-agnostic variables terminology


    【解决方案1】:

    这通常是一个私有变量,其他成员(属性、方法)使用它作为一种方便的方式来跟踪和确定在多个操作过程中选择的状态。

    这些通常但不总是布尔值或枚举值。

    例如,您可能有一个名为IsDataLoaded 的布尔“标志”和一个名为ShowResults() 的方法。在ShowResults() 方法的主体中,您将检查IsDataLoaded 标志的值,如果是true,则只显示结果。如果是false,则首先调用LoadData() 方法。加载数据后,LoadData() 方法会将标志从 false 更改为 true

    使用枚举和位掩码,“标志”可以是包含在单个值中的一组设置或选项。例如,如果您定义以下 (C#):

    enum foo
    {
        CaseSensitive = 1,
        Use24HourTime = 2,
        IgnoreRegistrySetting = 4,
        LoadFoosAndBarsSeparately = 8
    }
    

    您可以使用13 之类的简单值指定设置,或使用CaseSensitive | IgnoreRegistrySetting | LoadFoosAndBarsSeparately 指定“标志”。

    在.NET中,有一个System.FlagsAttribute属性:

    System.FlagsAttribute表示可以将枚举视为位域;即一组标志。

    【讨论】:

      【解决方案2】:

      通常但不一定是布尔值,标志变量用于确定特定数据段是有限离散集合中的哪个成员。

      在普通语言中,您可能会将一条数据标记为一只猫。或者标记一份工作申请,说明它不完整。

      在 C 和 C 派生语言中,标志变量通常是枚举类型。

      在 CPU 上,您通常会获得由早期操作设置的单个位状态标志。例如。您可以将两个数字相加,然后根据是否应该从最高位携带一个位来设置或取消设置“进位”标志。

      【讨论】:

        【解决方案3】:

        标志变量,最简单的形式, 是您定义的变量 值直到某些条件为真,在 在这种情况下,您更改变量的 价值。这是一个你可以使用的变量 控制函数的流程或 声明,允许您检查 某些条件,而你的功能 取得进展。

        计算机实现

        任何持有的变量或常数 数据可以用作标志。你可以 将存储位置视为 旗杆。内存储的值 变量传达了一些含义,而你 可以把它当成旗帜。

        一个例子可能是一个名为: 属于字符数据的性别 类型。通常存储的两个值 变量中有:“F”和“M” 意思是女性和男性。然后, 在程序中的某个地方,我们可能 查看变量以制作 决定:

        if gender equals 'F'
          display "Are you pregnant?"
          get answer from user store in pregnant variable
        

        看国旗意味着比较 变量中的值到另一个 值(一个常数或值 另一个变量)使用关系 运算符(在我们上面的示例中: 平等)。控制结构是 通过使用测试“控制” 表达式,通常是布尔值 表达。因此,国旗的概念 “查看”变量中的值 并将其与另一个值进行比较是 了解所有内容的基础 控制结构起作用。

        【讨论】:

          【解决方案4】:

          这个词通常用于描述位域:即某种整数变量,每个位都有特定的含义。 Windows 平台 API 广泛使用它们。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-06-07
            • 2020-09-27
            • 2012-12-06
            • 1970-01-01
            • 1970-01-01
            • 2017-08-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多