[問題] constant的定義

作者: zzss2003 (brotherD)   2017-10-26 15:05:34
小弟最近在看很多sepc,注意到constant這個字好像跟我心目中的定義不太一樣。
我一直以為 3, 0x2A, 0b10001000這些就是所謂的constant
但看到這份文件: https://en.wikipedia.org/wiki/Constant_(computer_programming)#Comparison_with_literals_and_macros
Definition: a constant is a value that cannot be altered by the program during
normal execution
這段給我的感覺是,只要在normal exectuion的過程中,值不被改變就叫constant
問題一:什麼是normal execution?
接著文件又說: When associated with an identifier, a constant is said to be
"named," although the terms "constant" and "named constant" are often used
interchangeably.
這段告訴我的意思是,以下程式碼:
int a = 3;
只要a的值在normal execution過程中沒有被改變,那a就叫 named constant,並不叫
variable.
請問各位大大,我理解的方向是正確的嗎?
作者: SecondRun (雨夜琴聲)   2017-10-26 15:16:00
是「不能」被改變
作者: djshen (djshen)   2017-10-26 16:24:00
literal?
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-10-26 16:51:00
學而不做則罔。對就是不做。
作者: jimfan (jimfan)   2017-10-26 17:43:00
3,0x2A係constant不錯呀,而int a = 3; 將3這個數值賦予給**變數** a,a的初始值是3,不過是可以改變的所以a依然係variable,至少編譯器不會阻止 a = 999;
作者: AstralBrain   2017-10-26 18:34:00
看你在看什麼語言的spec, 一般人認為的constant可能會跟spec定義的不太一樣例如說在c spec裡面, const int a = 3;的 a 不是constant寫 enum {X = a}, compiler會對這個a有意見但是在一般人的定義裡面a是個constant
作者: Lipraxde (Lipraxde)   2017-10-26 19:19:00
我是當作int,有const的特性@@
作者: kingofsdtw (不能閒下來!!)   2017-10-27 00:16:00
你把一個int vale丟到 func(const int &val,...)你可以很確認的知道value不會被改變或是你從 const data_t func(...)獲得資料你可以知道你獲的的data是無法改變的但是可以 看 or copy
作者: PkmX (阿貓)   2017-10-27 00:51:00
樓上return const value是沒有意義的
作者: SaberZ7 (Sean)   2017-10-27 01:07:00
先看看C規格書怎麼寫

Links booklink

Contact Us: admin [ a t ] ucptt.com