女性腰肌劳损吃什么药| 嘴发麻是什么原因引起的| 玻尿酸是干什么用的| 扁桃体长什么样| rm是什么币| 破处什么感觉| 战战兢兢的意思是什么| 痣发痒是什么原因| 为什么说成也萧何败也萧何| 舌苔发白是什么症状| 嗤笑什么意思| 鸡心为什么不建议吃| 什么是亲情| 家是什么| 2.0是什么意思| 胆固醇高应注意什么| 阳虚吃什么调理| 吃菌子不能吃什么| 查血糖挂什么科| 衣原体阴性是什么意思| 胃窦病变意味着什么| 生殖感染用什么消炎药效果好| 阴部瘙痒是什么原因| 15年是什么婚| 上海市长是什么级别| 2008年是什么年| 锶对人体有什么好处| 腿上有淤青是什么原因| 康桑密达是什么意思| 包头古代叫什么| item什么意思| 潜血弱阳性什么意思| 黄菡和黄澜什么关系| 痛风能吃什么肉| 淋巴结肿大看什么科室最好| 有机蔬菜是什么意思| nt什么时候做| 什么叫pc| 梦到两条蛇预示着什么| 植物生长需要什么| prog是什么意思| 准妈妈是什么意思| 做爱是什么感觉| 直肠息肉有什么症状| 776是什么意思| 梦见捡到钱是什么意思| 五行属火适合什么行业| spf是什么意思| 脚后跟骨头疼是什么原因| 界代表什么生肖| 脸大剪什么发型好看| 双相情感障碍什么意思| 知己是什么意思| 世界上最大的湖是什么湖| 毕业送什么礼物给老师| 晚上血压高是什么原因| 吝啬鬼是什么生肖| 吃什么可以偷偷流产| 10月17日什么星座| 补骨头吃什么最好| 减肥晚上适合吃什么水果| 天梭表什么档次| 青海是什么省| 6月6日是什么节| 幽门螺杆菌是一种什么病| 塞来昔布是什么药| 近亲结婚有什么危害| 检查肝脏应该挂什么科| 女人适合喝什么茶最好| 白电油对人体有什么危害| 威士忌属于什么酒| 优雅是什么意思| 苍白的什么| 不寐病属于什么病症| 什么降胆固醇| 栀子泡水喝有什么功效| 两点水有什么字| 凸起的痣是什么痣| 大暑是什么时间| 什么是叠词| 处女女和什么星座最配| 乳房钙化灶是什么意思| 检察院是干什么的| 突然长胖是什么原因造成的| 2月出生是什么星座| 脾疼是什么原因| 腿胖是什么原因引起的| 铁观音是什么茶类| 肺动脉增宽是什么意思| 宫颈病变有什么症状| 潮热盗汗是什么意思| 医生为什么叫大夫| flag是什么意思| 无锡有什么好玩的| 胃胀想吐吃什么药| 唯有读书高的前一句是什么| 猪八戒叫什么名字| 吃什么补身体| 抖是什么生肖| 组织部副部长是什么级别| 县公安局长什么级别| 健脾去湿吃什么药| 移民瑞士需要什么条件| 西梅是什么水果| out代表什么意思| 灵什么意思| 风热感冒吃什么药最好| 有缘无份什么意思| beside是什么意思| 北豆腐是什么| 大乌叶是什么茶| 人武部是干什么的| 05是什么生肖| 足银是什么意思| 睡眠障碍挂什么科| 阿司匹林肠溶片什么时间吃最好| 逃出生天什么意思| 保健品是什么意思| 胸透主要检查什么| 医生助理是做什么的| bdsm是什么意思| 天热喝什么茶好| 窝窝头是用什么做的| 空气净化器有什么作用| 皮肤溃烂化脓用什么药| 猛虎下山是什么生肖| 功名是什么意思| 为什么感冒药吃了想睡觉| 乳腺结节是什么| 新茶是什么意思| 利空什么意思| 猫什么时候打疫苗| hcv阳性是什么意思| 肩周炎吃什么药最好| 牡丹什么时候开| 什么是招风耳图片| 咽喉痛什么原因| 小雪时节吃什么| 槑是什么意思| 糙米饭是什么米| 结扎挂什么科| 吃什么清肺养肺| 子宫腺肌症是什么| 7月15日是什么节日| 怀孕什么不能吃| 世上谁嫌男人丑的前一句是什么| 巴适是什么意思| 为什么会长水痘| 为什么短信验证码收不到| 心灵手巧什么意思| 阴唇长什么样| 拉肚子吃什么食物比较好| 意图是什么意思| 家里适合养什么花| 糜烂性胃炎吃什么药| 蛋白尿吃什么药| 梁子是什么意思| esmara是什么品牌| 雪霁是什么意思| 口干什么原因| 生肖猴和什么生肖最配| 梦见一条小蛇是什么意思| 什么是水马| 耳朵里痒是什么原因| 无故流鼻血是什么原因| 为什么会得甲亢| 怀孕什么时候吃鹅蛋最好| 闰六月是什么意思| 黑色的鸟是什么鸟| 画眉鸟吃什么| 验血能查出什么| 什么情况会胎停| 睡觉流口水是什么毛病| 飞机杯长什么样| 梦见挖野菜是什么意思| 阴道炎用什么洗| 耳鸣挂什么科| 月经不规律吃什么药调理| 猫的眼睛为什么会发光| 尿隐血弱阳性是什么意思| 新生儿什么时候剪头发| 心脏彩超挂什么科| 印度以什么人种为主| 什么叫网红| 晒伤涂什么药膏| 老人吃什么钙片补钙效果最好| 香港有什么好吃的| 晏殊字什么| 全身浮肿是什么病| ep是什么意思| 网罗是什么意思| 胼胝体是什么意思| 今天吃什么菜| 喝醉是什么感觉| 吃姜对身体有什么好处| 枯木逢春是什么生肖| 师奶是什么意思| nu11是什么意思| 乐果农药适合杀什么虫| 牙齿痛挂什么科| 私是什么意思| 2003年属羊的是什么命| 脸上长痘挂什么科| 放鸽子是什么意思| 执勤是什么意思| 扬是什么生肖| 毛肚是什么| 九月十二号是什么星座| 纲目是什么意思| 什么食物是碱性的| 良性反应性改变是什么意思| 菠菜补什么| apart是什么意思| 联名款是什么意思| 感冒什么症状| 去韩国需要办理什么手续| 包拯属什么生肖| 大腿根疼挂什么科| 子宫附件彩超检查什么| 皮肤敏感是什么意思| 吃头孢为什么不能喝酒| 宫腔积液是什么意思| 手一直脱皮是什么原因| 炎性增殖灶是什么意思| 精囊炎吃什么药最有效| 身体老是出汗是什么原因| 耳鸣是什么原因| 心口疼是什么原因| 事业有成是什么意思| 痤疮用什么药| 孕期同房需要注意什么| 激素6项什么时候查| 咨询是什么意思| 什么原因引起高血压| 供观音菩萨有什么讲究| 肉麻是什么意思| 白身是什么意思| 养字五行属什么| 6.5是什么星座| 九月29号是什么星座| 胃酸烧心吃什么药| 打更的人叫什么| 慢什么斯什么| 为什么突然长痣| 身体有湿气有什么症状| 舌头烧灼感吃什么药| 驰骋沙场百战威是什么生肖| 万能受血者是什么血型| 为什么下雨会打雷| 肝郁化火是什么意思| 广基息肉是什么意思| 七月初七是什么生肖| 老睡不着觉是什么原因| 心魔是什么意思| 什么的蘑菇| 蚊子除了吸血还吃什么| 荔枝什么时候过季| 牙龈爱出血是什么原因| 电头是什么| 奎宁现在叫什么药| 睾丸突然疼痛什么原因| 无穷是什么意思| 建制派是什么意思| 包皮龟头炎用什么药膏| 百度

鱼鳞图(股票代码831885)新三板上市最新公告列表

百度 如果读懂这个东西,配合各种各样的互联网+行动计划,有很多事是清晰的,时间表、路线图、任务书都很明白。

In computer programming, an assignment statement sets and/or re-sets the value stored in the storage location(s) denoted by a variable name; in other words, it copies a value into the variable. In most imperative programming languages, the assignment statement (or expression) is a fundamental construct.

Today, the most commonly used notation for this operation is x = expr (originally Superplan 1949–51, popularized by Fortran 1957 and C). The second most commonly used notation is[1] x := expr (originally ALGOL 1958, popularised by Pascal).[2] Many other notations are also in use. In some languages, the symbol used is regarded as an operator (meaning that the assignment statement as a whole returns a value). Other languages define assignment as a statement (meaning that it cannot be used in an expression).

Assignments typically allow a variable to hold different values at different times during its life-span and scope. However, some languages (primarily strictly functional languages) do not allow that kind of "destructive" reassignment, as it might imply changes of non-local state. The purpose is to enforce referential transparency, i.e. functions that do not depend on the state of some variable(s), but produce the same results for a given set of parametric inputs at any point in time. Modern programs in other languages also often use similar strategies, although less strict, and only in certain parts, in order to reduce complexity, normally in conjunction with complementing methodologies such as data structuring, structured programming and object orientation.

Semantics

edit

An assignment operation is a process in imperative programming in which different values are associated with a particular variable name as time passes.[1] The program, in such model, operates by changing its state using successive assignment statements.[2][3] Primitives of imperative programming languages rely on assignment to do iteration.[4] At the lowest level, assignment is implemented using machine operations such as MOVE or STORE.[2][4]

Variables are containers for values. It is possible to put a value into a variable and later replace it with a new one. An assignment operation modifies the current state of the executing program.[3] Consequently, assignment is dependent on the concept of variables. In an assignment:

  • The expression is evaluated in the current state of the program.
  • The variable is assigned the computed value, replacing the prior value of that variable.

Example: Assuming that a is a numeric variable, the assignment a := 2*a means that the content of the variable a is doubled after the execution of the statement.

An example segment of C code:

int x = 10; 
float y;
x = 23;
y = 32.4f;

In this sample, the variable x is first declared as an int, and is then assigned the value of 10. Notice that the declaration and assignment occur in the same statement. In the second line, y is declared without an assignment. In the third line, x is reassigned the value of 23. Finally, y is assigned the value of 32.4.

For an assignment operation, it is necessary that the value of the expression is well-defined (it is a valid rvalue) and that the variable represents a modifiable entity (it is a valid modifiable (non-const) lvalue). In some languages, typically dynamic ones, it is not necessary to declare a variable prior to assigning it a value. In such languages, a variable is automatically declared the first time it is assigned to, with the scope it is declared in varying by language.

Single assignment

edit

Any assignment that changes an existing value (e.g. x := x + 1) is disallowed in purely functional languages.[4] In functional programming, assignment is discouraged in favor of single assignment, more commonly known as initialization. Single assignment is an example of name binding and differs from assignment as described in this article in that it can only be done once, usually when the variable is created; no subsequent reassignment is allowed.

An evaluation of an expression does not have a side effect if it does not change an observable state of the machine,[5] other than producing the result, and always produces same value for the same input.[4] Imperative assignment can introduce side effects while destroying and making the old value unavailable while substituting it with a new one,[6] and is referred to as destructive assignment for that reason in LISP and functional programming, similar to destructive updating.

Single assignment is the only form of assignment available in purely functional languages, such as Haskell, which do not have variables in the sense of imperative programming languages[4] but rather named constant values possibly of compound nature, with their elements progressively defined on-demand, for the lazy languages. Purely functional languages can provide an opportunity for computation to be performed in parallel, avoiding the von Neumann bottleneck of sequential one step at a time execution, since values are independent of each other.[7]

Impure functional languages provide both single assignment as well as true assignment (though true assignment is typically used with less frequency than in imperative programming languages). For example, in Scheme, both single assignment (with let) and true assignment (with set!) can be used on all variables, and specialized primitives are provided for destructive update inside lists, vectors, strings, etc. In OCaml, only single assignment is allowed for variables, via the let name = value syntax; however destructive update can be used on elements of arrays and strings with separate <- operator, as well as on fields of records and objects that have been explicitly declared mutable (meaning capable of being changed after their initial declaration) by the programmer.

Functional programming languages that use single assignment include Clojure (for data structures, not vars), Erlang (it accepts multiple assignment if the values are equal, in contrast to Haskell), F#, Haskell, JavaScript (for constants), Lava, OCaml, Oz (for dataflow variables, not cells), Racket (for some data structures like lists, not symbols), SASL, Scala (for vals), SISAL, Standard ML. Non-backtracking Prolog code can be considered explicit single-assignment, explicit in a sense that its (named) variables can be in explicitly unassigned state, or be set exactly once. In Haskell, by contrast, there can be no unassigned variables, and every variable can be thought of as being implicitly set, when it is created, to its value (or rather to a computational object that will produce its value on demand).

Value of an assignment

edit

In some programming languages, an assignment statement returns a value, while in others it does not.

In most expression-oriented programming languages (for example, C), the assignment statement returns the assigned value, allowing such idioms as x = y = a, in which the assignment statement y = a returns the value of a, which is then assigned to x. In a statement such as while ((ch = getchar()) != EOF) {}, the return value of a function is used to control a loop while assigning that same value to a variable.

In other programming languages, Scheme for example, the return value of an assignment is undefined and such idioms are invalid.

In Haskell,[8] there is no variable assignment; but operations similar to assignment (like assigning to a field of an array or a field of a mutable data structure) usually evaluate to the unit type, which is represented as (). This type has only one possible value, therefore containing no information. It is typically the type of an expression that is evaluated purely for its side effects.

Variant forms of assignment

edit

Certain use patterns are very common, and thus often have special syntax to support them. These are primarily syntactic sugar to reduce redundancy in the source code, but also assists readers of the code in understanding the programmer's intent, and provides the compiler with a clue to possible optimization.

Augmented assignment

edit

The case where the assigned value depends on a previous one is so common that many imperative languages, most notably C and the majority of its descendants, provide special operators called augmented assignment, like *=, so a = 2*a can instead be written as a *= 2.[3] Beyond syntactic sugar, this assists the task of the compiler by making clear that in-place modification of the variable a is possible.

Chained assignment

edit

A statement like w = x = y = z is called a chained assignment in which the value of z is assigned to multiple variables w, x, and y. Chained assignments are often used to initialize multiple variables, as in

a = b = c = d = f = 0

Not all programming languages support chained assignment. Chained assignments are equivalent to a sequence of assignments, but the evaluation strategy differs between languages. For simple chained assignments, like initializing multiple variables, the evaluation strategy does not matter, but if the targets (l-values) in the assignment are connected in some way, the evaluation strategy affects the result.

In some programming languages (C for example), chained assignments are supported because assignments are expressions, and have values. In this case chain assignment can be implemented by having a right-associative assignment, and assignments happen right-to-left. For example, i = arr[i] = f() is equivalent to arr[i] = f(); i = arr[i]. In C++ they are also available for values of class types by declaring the appropriate return type for the assignment operator.

In Python, assignment statements are not expressions and thus do not have a value. Instead, chained assignments are a series of statements with multiple targets for a single expression. The assignments are executed left-to-right so that i = arr[i] = f() evaluates the expression f(), then assigns the result to the leftmost target, i, and then assigns the same result to the next target, arr[i], using the new value of i.[9] This is essentially equivalent to tmp = f(); i = tmp; arr[i] = tmp though no actual variable is produced for the temporary value.

Parallel assignment

edit

Some programming languages, such as APL, Common Lisp,[10] Go,[11] JavaScript (since 1.7), Julia, PHP, Maple, Lua, occam 2,[12] Perl,[13] Python,[14] REBOL, Ruby,[15] and PowerShell allow several variables to be assigned in parallel, with syntax like:

a, b := 0, 1

which simultaneously assigns 0 to a and 1 to b. This is most often known as parallel assignment; it was introduced in CPL in 1963, under the name simultaneous assignment,[16] and is sometimes called multiple assignment, though this is confusing when used with "single assignment", as these are not opposites. If the right-hand side of the assignment is a single variable (e.g. an array or structure), the feature is called unpacking[17] or destructuring assignment:[18]

var list := {0, 1}
a, b := list

The list will be unpacked so that 0 is assigned to a and 1 to b. Furthermore,

a, b := b, a

swaps the values of a and b. In languages without parallel assignment, this would have to be written to use a temporary variable

var t := a
a := b
b := t

since a := b; b := a leaves both a and b with the original value of b.

Some languages, such as Go, F# and Python, combine parallel assignment, tuples, and automatic tuple unpacking to allow multiple return values from a single function, as in this Python example,

def f():
    return 1, 2
a, b = f()

while other languages, such as C# and Rust, shown here, require explicit tuple construction and deconstruction with parentheses:

// Valid C# or Rust syntax
(a, b) = (b, a);
// C# tuple return
(string, int) f() => ("foo", 1);
var (a, b) = f();
// Rust tuple return
let f = || ("foo", 1);
let (a, b) = f();

This provides an alternative to the use of output parameters for returning multiple values from a function. This dates to CLU (1974), and CLU helped popularize parallel assignment generally.

C# additionally allows generalized deconstruction assignment with implementation defined by the expression on the right-hand side, as the compiler searches for an appropriate instance or extension Deconstruct method on the expression, which must have output parameters for the variables being assigned to.[19] For example, one such method that would give the class it appears in the same behavior as the return value of f() above would be

void Deconstruct(out string a, out int b) { a = "foo"; b = 1; }

In C and C++, the comma operator is similar to parallel assignment in allowing multiple assignments to occur within a single statement, writing a = 1, b = 2 instead of a, b = 1, 2. This is primarily used in for loops, and is replaced by parallel assignment in other languages such as Go.[20] However, the above C++ code does not ensure perfect simultaneity, since the right side of the following code a = b, b = a+1 is evaluated after the left side. In languages such as Python, a, b = b, a+1 will assign the two variables concurrently, using the initial value of a to compute the new b.

Assignment versus equality

edit

The use of the equals sign = as an assignment operator has been frequently criticized, due to the conflict with equals as comparison for equality. This results both in confusion by novices in writing code, and confusion even by experienced programmers in reading code. The use of equals for assignment dates back to Heinz Rutishauser's language Superplan, designed from 1949 to 1951, and was particularly popularized by Fortran:

A notorious example for a bad idea was the choice of the equal sign to denote assignment. It goes back to Fortran in 1957[a] and has blindly been copied by armies of language designers. Why is it a bad idea? Because it overthrows a century old tradition to let “=” denote a comparison for equality, a predicate which is either true or false. But Fortran made it to mean assignment, the enforcing of equality. In this case, the operands are on unequal footing: The left operand (a variable) is to be made equal to the right operand (an expression). x = y does not mean the same thing as y = x.[21]

—?Niklaus Wirth, Good Ideas, Through the Looking Glass

Beginning programmers sometimes confuse assignment with the relational operator for equality, as "=" means equality in mathematics, and is used for assignment in many languages. But assignment alters the value of a variable, while equality testing tests whether two expressions have the same value.

In some languages, such as BASIC, a single equals sign ("=") is used for both the assignment operator and the equality relational operator, with context determining which is meant. Other languages use different symbols for the two operators.[22] For example:

  • In ALGOL and Pascal, the assignment operator is a colon and an equals sign (":=") while the equality operator is a single equals ("=").
  • In C, the assignment operator is a single equals sign ("=") while the equality operator is a pair of equals signs ("==").
  • In R, the assignment operator is basically <-, as in x <- value, but a single equals sign can be used in certain contexts.

The similarity in the two symbols can lead to errors if the programmer forgets which form ("=", "==", ":=") is appropriate, or mistypes "=" when "==" was intended. This is a common programming problem with languages such as C (including one famous attempt to backdoor the Linux kernel),[23] where the assignment operator also returns the value assigned (in the same way that a function returns a value), and can be validly nested inside expressions. If the intention was to compare two values in an if statement, for instance, an assignment is quite likely to return a value interpretable as Boolean true, in which case the then clause will be executed, leading the program to behave unexpectedly. Some language processors (such as gcc) can detect such situations, and warn the programmer of the potential error.[24][25]

Notation

edit

The two most common representations for the copying assignment are equals sign (=) and colon-equals (:=). Both forms may semantically denote either an assignment statement or an assignment operator (which also has a value), depending on language and/or usage.

variable = expression Fortran, PL/I, C (and descendants such as C++, Java, etc.), Bourne shell, Python, Go (assignment to pre-declared variables), R, PowerShell, Nim, etc.
variable := expression ALGOL (and derivatives), Simula, CPL, BCPL, Pascal[26] (and descendants such as Modula), Mary, PL/M, Ada, Smalltalk, Eiffel,[27][28] Oberon, Dylan,[29] Seed7, Python (an assignment expression),[30] Go (shorthand for declaring and defining a variable),[31] Io, AMPL, ML (assigning to a reference value),[32] AutoHotkey etc.

Other possibilities include a left arrow or a keyword, though there are other, rarer, variants:

variable << expression Magik
variable <- expression F#, OCaml, R, S
variable <<- expression R
assign("variable", expression) R
variableexpression APL,[33] Smalltalk, Atari 2600 BASIC Programming
variable =: expression J
LET variable = expression BASIC
let variable := expression XQuery
set variable to expression AppleScript
set variable = expression C shell
Set-Variable variable (expression) PowerShell
variable : expression Macsyma, Maxima, K
variable: expression Rebol
var variable expression mIRC scripting language
reference-variable :- reference-expression Simula

Mathematical pseudo code assignments are generally depicted with a left-arrow.

Some platforms put the expression on the left and the variable on the right:

MOVE expression TO variable COBOL
expressionvariable TI-BASIC, Casio BASIC
expression -> variable POP-2, BETA, R
put expression into variable HyperTalk, LiveCode
PUT expression IN variable ABC

Some expression-oriented languages, such as Lisp[34][35] and Tcl, uniformly use prefix (or postfix) syntax for all statements, including assignment.

(setf variable expression) Common Lisp
(set! variable expression) Scheme[36][37][38]
set variable expression Tcl
expression variable ! Forth

See also

edit

Notes

edit
  1. ^ Use of = predates Fortran, though it was popularized by Fortran.

References

edit
  1. ^ a b "2cs24 Declarative". www.csc.liv.ac.uk. Archived from the original on 24 April 2006. Retrieved 20 April 2018.
  2. ^ a b c "Imperative Programming". uah.edu. Archived from the original on 4 March 2016. Retrieved 20 April 2018.
  3. ^ a b c Ruediger-Marcus Flaig (2008). Bioinformatics programming in Python: a practical course for beginners. Wiley-VCH. pp. 98–99. ISBN 978-3-527-32094-3. Retrieved 25 December 2010.
  4. ^ a b c d e Crossing borders: Explore functional programming with Haskell Archived November 19, 2010, at the Wayback Machine, by Bruce Tate
  5. ^ Mitchell, John C. (2003). Concepts in programming languages. Cambridge University Press. p. 23. ISBN 978-0-521-78098-8. Retrieved 3 January 2011.
  6. ^ "Imperative Programming Languages (IPL)" (PDF). gwu.edu. Archived from the original (PDF) on 2025-08-07. Retrieved 20 April 2018.
  7. ^ John C. Mitchell (2003). Concepts in programming languages. Cambridge University Press. pp. 81–82. ISBN 978-0-521-78098-8. Retrieved 3 January 2011.
  8. ^ Hudak, Paul (2000). The Haskell School of Expression: Learning Functional Programming Through Multimedia. Cambridge: Cambridge University Press. ISBN 0-521-64408-9.
  9. ^ "7. Simple statements — Python 3.6.5 documentation". docs.python.org. Retrieved 20 April 2018.
  10. ^ "CLHS: Macro SETF, PSETF". Common Lisp Hyperspec. LispWorks. Retrieved 23 April 2019.
  11. ^ The Go Programming Language Specification: Assignments
  12. ^ INMOS Limited, ed. (1988). Occam 2 Reference Manual. New Jersey: Prentice Hall. ISBN 0-13-629312-3.
  13. ^ Wall, Larry; Christiansen, Tom; Schwartz, Randal C. (1996). Perl Programming Language (2 ed.). Cambridge: O′Reilly. ISBN 1-56592-149-6.
  14. ^ Lutz, Mark (2001). Python Programming Language (2 ed.). Sebastopol: O′Reilly. ISBN 0-596-00085-5.
  15. ^ Thomas, David; Hunt, Andrew (2001). Programming Ruby: The Pragmatic Programmer's Guide. Upper Saddle River: Addison Wesley. ISBN 0-201-71089-7.
  16. ^ D.W. Barron et al., "The main features of CPL", Computer Journal 6:2:140 (1963). full text (subscription)
  17. ^ "PEP 3132 -- Extended Iterable Unpacking". legacy.python.org. Retrieved 20 April 2018.
  18. ^ "Destructuring assignment". MDN Web Docs. Retrieved 20 April 2018.
  19. ^ "Deconstructing tuples and other types". Microsoft Docs. Microsoft. Retrieved 29 August 2019.
  20. ^ Effective Go: for, "Finally, Go has no comma operator and ++ and -- are statements not expressions. Thus if you want to run multiple variables in a for you should use parallel assignment (although that precludes ++ and --)."
  21. ^ Niklaus Wirth. "Good Ideas, Through the Looking Glass". CiteSeerX 10.1.1.88.8309.
  22. ^ "C++ Programming Language. Basics". ntu.edu.sg. 2025-08-07. Retrieved 2025-08-07.
  23. ^ Corbet (6 November 2003). "An attempt to backdoor the kernel". lwn.net. Retrieved 2025-08-07.
  24. ^ "Static Analyzer Options (Using the GNU Compiler Collection (GCC))". gcc.gnu.org. Retrieved 2025-08-07.
  25. ^ Deitel, Paul; Deitel, Harvey (2025-08-07). "C++ Control Statements, Part 2". Domyassignments. Retrieved 2025-08-07.
  26. ^ Moore, Lawrie (1980). Foundations of Programming with Pascal. New York: John Wiley & Sons. ISBN 0-470-26939-1.
  27. ^ Meyer, Bertrand (1992). Eiffel the Language. Hemel Hempstead: Prentice Hall International(UK). ISBN 0-13-247925-7.
  28. ^ Wiener, Richard (1996). An Object-Oriented Introduction to Computer Science Using Eiffel. Upper Saddle River, New Jersey: Prentice Hall. ISBN 0-13-183872-5.
  29. ^ Feinberg, Neal; Keene, Sonya E.; Mathews, Robert O.; Withington, P. Tucker (1997). Dylan Programming. Massachusetts: Addison Wesley. ISBN 0-201-47976-1.
  30. ^ "PEP 572 – Assignment Expressions". python.org. 28 February 2018. Retrieved 4 March 2020.
  31. ^ "The Go Programming Language Specification - The Go Programming Language". golang.org. Retrieved 20 April 2018.
  32. ^ Ullman, Jeffrey D. (1998). Elements of ML Programming: ML97 Edition. Englewood Cliffs, New Jersey: Prentice Hall. ISBN 0-13-790387-1.
  33. ^ Iverson, Kenneth E. (1962). A Programming Language. John Wiley and Sons. ISBN 0-471-43014-5. Archived from the original on 2025-08-07. Retrieved 2025-08-07. {{cite book}}: ISBN / Date incompatibility (help)
  34. ^ Graham, Paul (1996). ANSI Common Lisp. New Jersey: Prentice Hall. ISBN 0-13-370875-6.
  35. ^ Steele, Guy L. (1990). Common Lisp: The Language. Lexington: Digital Press. ISBN 1-55558-041-6.
  36. ^ Dybvig, R. Kent (1996). The Scheme Programming Language: ANSI Scheme. New Jersey: Prentice Hall. ISBN 0-13-454646-6.
  37. ^ Smith, Jerry D. (1988). Introduction to Scheme. New Jersey: Prentice Hall. ISBN 0-13-496712-7.
  38. ^ Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (1996). Structure and Interpretation of Computer Programs. New Jersey: McGraw-Hill. ISBN 0-07-000484-6.
朝圣者是什么意思 木菠萝什么时候成熟 匹马棉是什么面料 紫玫瑰代表什么意思 蚂蚁代表什么生肖
做什么运动可以长高 仙人掌能治什么病 不稀罕是什么意思 结婚一年是什么婚 树欲静而风不止是什么意思
凉皮用什么粉做的 妇炎康片有什么副作用 恐龙是什么时候灭绝的 甘薯是什么 阴虱长什么样子图片
新生儿吃什么钙好 更是什么结构的字 酸碱度偏高是什么意思 366红包代表什么意思 mac是什么牌子口红
来例假不能吃什么jingluanji.com 孙尚香字什么hcv9jop2ns7r.cn 槊是什么意思bfb118.com 筋头巴脑是什么肉hcv9jop3ns9r.cn 推迟月经吃什么药520myf.com
什么布料最凉快hcv8jop5ns8r.cn 猫咪拉稀吃什么药hcv9jop1ns9r.cn 什么药治脂肪肝hcv8jop6ns8r.cn 情人节送什么hcv8jop4ns4r.cn 鸽子炖什么补气血hcv9jop1ns2r.cn
久负盛名的负是什么意思zhongyiyatai.com husky是什么牌子hcv8jop7ns5r.cn 上火是什么症状hcv9jop7ns0r.cn 发烧不退烧是什么原因adwl56.com 1月19号什么星座zhongyiyatai.com
什么水什么什么mmeoe.com 两女 一杯是什么xianpinbao.com 维生素b族什么牌子的好hcv9jop2ns2r.cn 舌苔发黄是什么症状hcv8jop9ns7r.cn 梦见自己家被盗有什么预兆wmyky.com
百度