2011-01-14 97 views
2

如果我有C++中的一些表達:常量變量悖論

const int x = 3; 

可以我說x是變量?這似乎很奇怪的原因x不是變量,因爲我不能改變它,在此先感謝任何expanations

編輯 附:感謝所有的答案,我明白,根據C++的定義,我的問題的答案可能是肯定的,你是否知道一些其他語言,其中我的問題的答案是否定的?

+4

我期待着一個關於一個變量的帖子,它及時回溯並將自己的聲明更改爲`const`。 – Aphex 2011-01-14 20:47:56

+0

按什麼定義變量? C++標準還是英語? – 2011-01-14 20:57:04

+0

「變量」一詞意味着「變化的東西」,但這不是正式的C++定義。 – 2011-01-14 20:57:54

回答

5

是的。 x是一個變量,即使你不能(合法地)改變它的值。

實際上,在C++中,具有名稱的對象是「變量」。

1

這是哲學的,它不能修改,事實上像GCC這樣的編譯器會將它存儲在文本部分。 所以或者是一個不可修改的變量或常量。

1

在C++中的術語的術語可變與術語對象幾乎同義:任何聲明的對象可變。對象是否可改變沒有區別。因此,在官方術語中,是的,x是一個變量。

0

在用於C++這樣的對象的ISO語言定義被稱爲一個常量變量,意思是只讀變量。在概念術語和自然語言語義中,它是一個常數。

我想象的術語僅用於區分一個恆定對象(如x在您的示例)從字面恆定,(如3),其中一個是可尋址的對象,而另一個是不。不使用術語const object,因爲對象引用內存中的實例,而變量引用與對象關聯的名稱或標識符。

0

BTW它是一個函數聲明非常有用,例如

void ReadStuff(const int a) 

這意味着你實際上可以給功能的非靜態變量,但 它將作爲一個常數來處理(即該函數將不改變它)。