变量的定义

时间:2012-02-02 03:41:16

标签: programming-languages semantics

我最后与一些朋友讨论了关于编程变量的定义。

我的理解是编程中的变量可以是不变的或变化的。

他们的观点是单词变量的真正定义是它可以改变,因此引用可以改变的某个值的标识符是一个变量,其中引用一个定义为常量的值的一组字符字面上被称为一个常数。即,

Int  constant blah
Int  argh 

因此,根据他们的定义,他们将blah称为常数,并将argh称为变量。 我的定义是变量blah是常数而argh也是变量(不是常数)

我是否错误地提到了这些标识符?

2 个答案:

答案 0 :(得分:2)

你的朋友是对的。常量和变量基本上与它们的定义相反。

变量可以表示许多不同的值,当名称引用时,该值是未知的。

另一方面,常数只表示一个值,如果你知道它的值,你就可以指望它永远不会改变。

当然,在编程语言中,它们是非常相似的东西。它们通常遵循相同的命名规则并且可以以相同的方式存储,但是,就像变量不是常量一样,常量也不是变量。

答案 1 :(得分:1)

根据我的经验,这取决于你与谁交谈。话虽如此,我的定义是 *值是......值(1,“a”等) *变量是用于引用值的名称。可以使用多个名称来引用相同的值,并且可以使用变量引用的值随时间变化,但这两个名称都不是必需的。

int a = 1;
    ^ variable
        ^ value

Cody Gray提到的wikipedia link强化了这种观点,或者似乎在我看来。

如果有帮助,请考虑纯函数式语言有变量,但根据函数式语言的定义,这些变量指向的值不能随时间变化。

值得注意的是,您的定义还取决于您讨论的背景。如果你在谈论“变量与常数”,可以说它们是极端对立的。如果你在谈论“变量与价值与关键词的比较”,那你就是在讨论单词变量(种类)的不同用法。

例如,考虑水果vs vegetable。在科学术语中,茄子是一种水果。在烹饪术语中,它是一种蔬菜。烹饪术语蔬菜可以指科学术语中的东西,水果,根,坚果和各种其他东西。您需要了解讨论的背景,以便能够说明“x是果实”是否准确。