var = 1与var = 1有何不同?这些差异在哪些语言中真正重要或无关紧要?
答案 0 :(得分:4)
在brainfuck中,两者都被忽略为评论。
在sh中,var=1
将var
设置为1
,而var = 1
尝试使用参数var
和{{=
运行程序1
1}}。
答案 1 :(得分:4)
好吧,bash
为一个人:
var = 1
尝试使用var
和=
参数运行1
程序,同时:
var=1
将var
设置为1
。甚至还有另一种变体:
var= 1
暂时将var
设置为空字符串并尝试运行1
程序(var
在运行后恢复为原始值。)
而且,为了完整性:
var =1
尝试使用单个参数var
运行=1
程序。
答案 2 :(得分:1)
阅读:
在用计算机编程语言编写的源代码中出现的空格(超出第一个空白字符)的运行通常被忽略;这些语言是自由形式的
在计算机编程中,自由形式语言是一种编程语言,其中在程序文本中页面上的字符定位是无关紧要的。程序文本不需要像旧打孔卡系统那样放在特定的列中,并且通常行的末尾是无关紧要的。空格字符仅用于分隔标记,没有其他意义。
大多数自由格式语言都来自ALGOL,包括C,Pascal和Perl。 Lisp语言是自由格式的,尽管它们不是来自ALGOL。 REXX主要是自由格式的,但在某些情况下,空格字符是连接运算符。 SQL虽然不是完整的编程语言,但也是自由格式的。
答案 3 :(得分:0)
据我所知,' ='意味着分配'在大多数编程语言中。(编译器只是忽略空白)
' =='和' ==='在某些地方可能会有所不同,例如javascript。
答案 4 :(得分:0)
注意:在某些语言中var
本身会有问题。例如,在C#中,它是一个保留关键字。所以也许x = 1
会是一个更好的例子。 '='也是某些语言中的赋值运算符,而其他语言中是等号检查运算符。我没有担心这些问题,而是专注于不同的词汇处理学校。
我的便士值得:
在Algol传统的大多数编程语言中(包括C及其后代),这样的空白不会产生任何影响。这样的语言允许消除没有句法(或语义效果)效果的空格,只要这样做不允许形成多个符号预定义运算符之一:因此`3+4
与3 + 4
和{{1}相同}}与x++-5
相同,但与x ++ - 5
不同。
有一些语言,例如SML,其中任何不受空格中断的(非字母数字)符号序列都是有效的标识符:在这些语言中x + + - 5
与3+4
相同但{ {1}}(3 + 4
x ++ - 4'。
有些语言甚至可以将x++-4
之类的内容视为单个标记,即语法上与x ++- 4') is not the same as
不同的内容。
早期版本的FORTRAN有一个有趣的方法,它已经成为批评的焦点,并成为破碎的宇宙飞船错误故事的基础。 (更多内容见下文)。
最后,一些语言,如Miranda,Haskell和CoffeeScript,遵循ISWIM传统,并使缩进在语法上具有重要意义。
一个以处理空白而臭名昭着的语言的例子是Fortran(尽管大多数批评都适用于该语言的早期版本;后来的版本在这方面更像是Algol)。
其中一个有趣的故事是导致火箭(我听到的版本中的航天飞机)发生故障的错误,因为FORTRAN忽略了空格,所以3+4
(应该是3 + 4
- DO是FORTRAN等同于其他语言的DO 10 I = 1.100
循环)被解析为值DO 10 I = 1,100
到变量for
的赋值。
FORTRAN代码行
显然确实发生过。编译器显然做到了 应该这样做,忽略空白并隐含地宣告然后 分配DO10I。值得注意的是,该程序实际上已经过测试过 使用。检测到错误,从而节省了火箭但毁了火箭 未来的事实。火箭的消亡已被广泛报道 已经成为程序员民俗的一部分。100
引文来源:
http://www-users.cs.york.ac.uk/susan/cyc/p/fbug.htm
不同编程语言中的空白主题非常有趣:
http://c2.com/cgi/wiki?SyntacticallySignificantWhitespaceConsideredHarmful
从这个非常有趣和有趣(以一种令人讨厌的方式)来源的行情来源:
人们必须想知道为什么空格总是被用作分隔符。通过使用 作为分隔符的空格,它阻止用户只包括 名称中的空格,导致CamelCase和 EmbeddedUnderscore圣战。考虑一下,在C中,仅使用空格 用于类型/范围信息。如果语言选择了更多 使用冒号的类似pascal的方法,然后可以避免整个HolyWar。而
global,const,string:null指针异常消息=“发生空指针异常”
对我们来说可能看起来很陌生,它会避免一些讨厌的风格 问题。特别是因为空间划界似乎已经传播 整个Unix,与win32兼容(没有任何疑虑 关于文件名,SQL表格等空格。)麻烦。在许多编程语言中(C,C ++,Lisp,Java,Forth,...等等) 以及HTML,...),空格的存在与否 语法上显着(否则“foo bar”意思相同 作为“foobar”)(标记分隔符)的东西。 (LISP使用空格分隔 列表中的项目...而其他语言通常使用逗号。)但是, 各种风格的空白(标签,空格键,返回,换行, CR / LF)和各种空间都被视为相同的 “一些空白”。一个空间,三个空格,两个换行,一个标签 - 没有 它们之间存在显着差异。