var = 1如何與var = 1區別?以及這些差異真的很重要或無關緊要的是什麼語言?var = 1和var = 1的區別
回答
在brainfuck中,兩者都被忽略爲評論。
在SH,var=1
套var
到1
而var = 1
嘗試與論據=
和1
運行程序var
。
那麼,在bash
一:
var = 1
試圖運行var
程序與=
和1
參數,而:
var=1
套var
到1
。甚至還有另一種變體:
var= 1
暫時設置var
爲空字符串,並嘗試運行1
程序(var
恢復到其原始值的運行後)。
而且,對於完整性:
var =1
它試圖用一個參數=1
運行var
程序。
FORTRAN有EQ和EQV操作員......但不能簡單地寫'x EQ y',因爲(在fortran中)白色空間被忽略,大小寫被忽略。所以'x EQ y'會變成XEQY。爲了解決這個問題(類似於)stropping被實現了[c.f. stropping](http://en.wikipedia.org/wiki/Stropping_%28programming%29#Other_languages)這些操作符被實現爲'x.EQ.y'和'a.EQV.b' – NevilleDNZ
據我所知,「=」是指在大多數編程語言「分配」。(編譯器只是忽略空白)
「==」和「===」可能是在一些地方不同,比如javascript。
注:在某些語言var
本身會有問題。例如,在C#中,它是一個保留關鍵字。所以x = 1
可能是一個更好的例子。另外'='是一些語言的賦值操作符,而另一些則是等式檢查操作符。我不再擔心這些問題,而是專注於不同的詞彙處理流派。
我一分錢的價值:
在陵傳統的大多數編程語言(包括C和它的後代)這樣的空白不會有所作爲。只要這樣做不允許多個符號預定義操作符中的一個被形成,這樣的語言就可以消除空白而沒有語法(或語義效果)效果:因此
`3+4
與3 + 4
相同,並且x++-5
與x ++ - 5
相同,但不相同x + + - 5
。有語言如SML其中由空格不間斷的(非字母數字)個符號的任意序列是有效的標識符:在這樣的語言中
3+4
相同3 + 4
但x++-4
(x ++- 4') is not the same as
X ++ - 4' 。
有些情況下,甚至像
3+4
將被視爲一個單一的令牌即作爲東西3 + 4
語法不同的語言。FORTRAN的早期版本有一個收集批評,並擔任一個有趣的方法作爲粉碎的宇宙飛船錯誤故事的基礎。 (更多關於下面)。最後,一些語言,例如Miranda,Haskell和CoffeeScript,遵循ISWIM傳統並使縮進在語法上具有重要意義。
是臭名昭著的治療空白的語言的一個例子是Fortran語言(儘管大多數的批評適用於早期版本的語言;後來的版本更像陵在這方面)。
一個有趣的故事是導致火箭(在我聽到的版本航天飛機)發生故障,因爲FORTRAN忽略空格等DO 10 I = 1.100
(這應該是DO 10 I = 1,100
的bug - DO是FORTRAN相當於什麼是其他語言的for
循環)被解析爲值100
到變量DO 10 I
的賦值。
的Fortran代碼
DO 10 I = 1.100
行顯然的確發生。編譯器顯然做了 應該做的事,忽略空格並隱式聲明,然後 分配DO10I。值得注意的是,該程序實際上是在使用 之前進行測試的。檢測到錯誤,從而節省了火箭,但破壞了未來的事實。火箭的滅亡已被廣泛報道,並已成爲程序員民間傳說的一部分。
來源報價:
http://www-users.cs.york.ac.uk/susan/cyc/p/fbug.htm
在不同的編程語言空白的話題可以說是相當有趣:從這個相當採取
http://c2.com/cgi/wiki?SyntacticallySignificantWhitespaceConsideredHarmful
行情有趣和有趣(以一種令人討厭的方式)如此urce:
你必須想知道爲什麼空格總是用作分隔符。通過使用空格作爲分隔符 ,它可以防止用戶在其名稱中僅包含空格,導致CamelCase和EmbeddedUnderscore聖戰。考慮到在C中,空間僅用於類型/作用域信息的 。如果該語言選擇了使用冒號的類似pascal的方法,那麼整個HolyWar就可以避免。雖然
全球,常量,字符串:「出現了一個空指針異常」空指針異常消息=
看起來國外對我們的眼睛,它會避免一些討厭的風格 問題。特別是因爲空間分隔在整個Unix中似乎已經傳播了 ,所以與win32(關於文件名,SQL表格等空間沒有問題 )的兼容性很麻煩。
在許多編程語言(C,C++,Lisp,Java,Forth等等,如 以及HTML,...)中,空格的存在或不存在是 語法上重要的(否則「foo bar「意味着與」foobar「相同的 )(令牌分隔符)。 (LISP使用空格分隔列表中的 項目,而其他語言通常使用逗號。)但是,各種空格(製表符,空格鍵,返回鍵,換行符,空格鍵和空格鍵)以及各種空格都是空格與 「有些空白」的處理方式相同。一個空格,三個空格,2個換行符,一個製表符 - 它們之間沒有顯着差異 。
- 1. $ VAR = $ VAR - 1個PHP問題
- 2. Smarty var unexpected 1
- 3. 「var = $ {var:-word}」和「var = $ {var:= word}」有什麼區別?
- 4. {$ var}和$ var之間有什麼區別?
- 5. Var和新的區別
- 6. 遞歸形式var + = func(var,n-1)
- 7. 'string'== $ var或$ var =='string'的區別?
- 8. VAR =的document.getElementById( 'mynubervalue1')。innerHTML的+ 1
- 9. 爲什麼`--var`和`var-1`的工作方式不同?
- 10. 1 var works,1不。爲什麼?
- 11. 是VAR | = 1 << 2; reverisble?
- 12. var prime = num!= 1;意思?
- 13. Swift中var和var的區別是什麼
- 14. static_cast <int>(var)和*(int *)&var之間的區別是什麼?
- 15. JQuery:「var test」和「var $ test」之間的區別是什麼
- 16. 將變量定義爲var $ a = $()和var a之間的區別?
- 17. 在bash腳本中$ {VAR:-...}和$ {VAR:?...}之間的區別是什麼
- 18. apache中的$ {var}和%{VAR}有什麼區別?
- 19. C - 「char var []」和「char * var」之間的區別?
- 20. JavaScript中的'var $ x'和'var x'有什麼區別?
- 21. char * var;和char * var;?
- 22. 懶惰var和let之間的區別
- 23. C#「var」和C++「auto」之間的區別
- 24. bind和var self之間的區別= this?
- 25. var-> myProperty和var.myProperty之間的區別
- 26. $ GLOBALS和大寫$ var之間的區別
- 27. dmesg和/var/log/kern.log之間的區別
- 28. C#中「var」和「object」的區別
- 29. $ {var:-word}和$ {var-word}之間有什麼區別?
- 30. CocosBuilder中'Doc root var'和'Owner var'有什麼區別
第一個,等號周圍沒有空格,第二個是?不知道你在說什麼語言,這個問題是沒有意義的。在一些白色空間是重要的,而在另一些白色空間則不是。在某些語言中,單一的'='是一個賦值操作符,而在其他語言中它是平等的(在某些語言中,它都取決於上下文)。 –
我對upvoted這個問題只是因爲我都喜歡閱讀其他答案,我喜歡寫我的:-) –