Augmented assignment

Augmented assignment (or compound assignment) is the name given to certain assignment operators in certain programming languages (especially those derived from C). An augmented assignment is generally used to replace a statement where an operator takes a variable as one of its arguments and then assigns the result back to the same variable. A simple example is x += 1 which is expanded to x = x + 1. Similar constructions are often available for various binary operators.

In general, in languages offering this feature, most operators that can take a variable as one of their arguments and return a result of the same type have an augmented assignment equivalent that assigns the result back to the variable in place, including arithmetic operators, bitshift operators, and bitwise operators.

Discussion

For example, the following statement or some variation of it can be found in many programs:

x = x + 1

This means "find the number stored in the variable x, add 1 to it, and store the result of the addition in the variable x." As simple as this seems, it may have an inefficiency, in that the location of variable x has to be looked up twice if the compiler does not recognize that two parts of the expression are identical: x might be a reference to some array element or other complexity. In comparison, here is the augmented assignment version:

x += 1

With this version, there is no excuse for a compiler failing to generate code that looks up the location of variable x just once, and modifies it in place, if of course the machine code supports such a sequence. For instance, if x is a simple variable, the machine code sequence might be something like

 Load  x
 Add   1
 Store x

and the same code would be generated for both forms. But if there is a special op code, it might be

 MDM   x,1

meaning "Modify Memory" by adding 1 to x, and an optimizing compiler would generate the same code for both forms. Some machine codes offer INC and DEC operations (to add or subtract one), others might allow constants other than one.

More generally, the form is

x ?= expression

where the ? stands for some operator (not always +), and there may be no special op codes to help. There is still the possibility that if x is a complicated entity the compiler will be encouraged to avoid duplication in accessing x, and of course, if x is a lengthy name, there will be less typing required. This last was the basis of the similar feature in the ALGOL compilers offered via the Burroughs B6700 systems, using the tilde symbol to stand for the variable being assigned to, so that

LongName:=x + sqrt(LongName)*7;

would become

LongName:=x + sqrt(~)*7;

and so forth. This is more general than just x:=~ + 1; Producing optimum code would remain the province of the compiler.

Semantics

In expression-oriented programming languages such as C, assignment and augmented assignment are expressions, which have a value. This allows their use in complex expressions. However, this can produce sequences of symbols that are difficult to read or understand, and worse, a mistype can easily produce a different sequence of gibberish that although accepted by the compiler does not produce desired results. In other languages, such as Python, assignment and augmented assignment are statements, not expressions, and thus cannot be used in complex expressions. For example, the following is valid C, but not valid Python:

a += b += c

As with assignment, in these languages augmented assignment is a form of right-associative assignment.

Unlike in C, the compound assignment expressions of C++ evaluate to an lvalue.[1] Being an lvalue allows it to be written on the left-hand-side of some other assignment statement:[2]

int x = 11;
(x *= 2) += 3; // Sets x to 25

Computed assignment locations

In languages such as C, C++ and Python, an augmented assignment where the assignment location includes function calls, is mandated to only call the functions once. I.e in the statement:

my_array[f1()] += 1

The function f1 is mandated to only be called once.

If a language implements augmented assignment by macro expansion to:

my_array[f1()] = my_array[f1()] + 1

Then f1 is called twice.

By language

C descendants

In C, C++, and C#, the assignment operator is =, which is augmented as follows:

Operator Description
+= Addition
-= Subtraction
*= Multiplication
/= Division
%= Modulus
<<= Left bit shift
>>= Right bit shift
&= Bitwise AND
^= Bitwise exclusive OR
|= Bitwise inclusive OR

Each of these is called a compound assignment operator in said languages.[1][3][4][5]

Supporting languages

The following list, though not complete or all-inclusive, lists some of the major programming languages that support augmented assignment operators.

See also

References

  1. ^ a b "Assignment Operators". cppreference.com. C++ Reference. Retrieved 1 March 2021.
  2. ^ Stroustrup, Bjarne (2013). The C++ Programming Language (Fourth ed.). Addison-Wesley. ISBN 978-0-321-56384-2.
  3. ^ "ISO/IEC 9899:201x Committee Draft April 12, 2011 N1570".
  4. ^ "Assignment and compound assignment operators".
  5. ^ "C# Language Specification". Microsoft. Retrieved 17 March 2014.

Read other articles:

Croatian soldier and politician (1878–1947) Slavko KvaternikKvaternik in 19421st Minister of Armed Forces of the Independent State of CroatiaIn office10 April 1941 – 4 January 1943Prime MinisterAnte PavelićPreceded byOffice establishedSucceeded byAnte PavelićChief of General Staff of theState of Slovenes, Croats and SerbsIn office29 October 1918 – 1 December 1918PresidentAnton KorošecPreceded byOffice establishedSucceeded byOffice abolished Personal detailsBorn(...

 

Strada statale 662di SaviglianoDenominazioni precedentiStrada provinciale di Crissolo Denominazioni successiveStrada provinciale 662 di Savigliano LocalizzazioneStato Italia Regioni Piemonte DatiClassificazioneStrada statale InizioRoreto FineSaluzzo Lunghezza28,520[1] km Provvedimento di istituzioneD.M. 2362 del 18/12/1990 - G.U. 24 del 29/01/1991[2] GestoreANAS (1991-2001) ANAS tratta Saluzzo -Savigliano (2021-) Manuale La ex strada statale 662 di Savigliano (SS 662...

 

Untuk kegunaan lain, lihat Perdagangan adil (disambiguasi). Bagian dari seri politik tentangProgresivisme Ide Ide kemajuan Kemajuan ilmiah Kemajuan sosial Pembangunan ekonomi Perubahan teknologi Sejarah linier Sejarah Pencerahan Revolusi industri Modernitas Portal Politiklbs Perdagangan adil adalah gerakan sosial yang bertujuan membantu produsen di negara berkembang menikmati perdagangan yang lebih baik dan memperkenalkan keberlanjutan lingkungan. Anggota gerakan ini mendukung pembayaran harg...

Radio station in Twin Falls, IdahoKLIX-FMTwin Falls, IdahoBroadcast areaTwin Falls, IdahoFrequency96.5 MHzBrandingKool 96.5ProgrammingFormatClassic hitsAffiliationsCompass Media NetworksOwnershipOwnerTownsquare Media(Townsquare License, LLC)Sister stationsKEZJ-FM, KLIX, KSNQHistoryFirst air date1974Technical informationFacility ID3407ClassC1ERP100,000 wattsHAAT40 meters (130 ft)LinksWebcastListen LiveWebsitekool965.com KLIX-FM (96.5 MHz) is a commercial radio station located in Twin Fall...

 

Milk tea beverage in Southeast Asia Teh tarikTypeBeveragePlace of originMalaysiaRegion or stateMalay Peninsula[1]Created byIndian immigrants in the Malay peninsula[1][2]Serving temperatureHotSimilar dishesMilk tea, including Burmese milk tea and Hong Kong-style milk tea  Media: Teh tarik Teh tarik (lit. 'pulled tea') is a popular hot milk tea beverage most commonly found in restaurants, outdoor stalls, mamaks and kopitiams within the Southeast Asian ...

 

Bagian dari seriIlmu Pengetahuan Formal Logika Matematika Logika matematika Statistika matematika Ilmu komputer teoretis Teori permainan Teori keputusan Ilmu aktuaria Teori informasi Teori sistem FisikalFisika Fisika klasik Fisika modern Fisika terapan Fisika komputasi Fisika atom Fisika nuklir Fisika partikel Fisika eksperimental Fisika teori Fisika benda terkondensasi Mekanika Mekanika klasik Mekanika kuantum Mekanika kontinuum Rheologi Mekanika benda padat Mekanika fluida Fisika plasma Ter...

American college basketball season 2011–12 Texas A&M–Corpus Christi Islanders men's basketballConferenceSouthland ConferenceDivisionWestRecord6–24 (4–12 Southland)Head coachWillis Wilson (1st season)Assistant coaches Marty Gross K. T. Turner Mark Dannhoff Home arenaAmerican Bank CenterSeasons← 2010–112012–13 → 2011–12 Southland Conference men's basketball standings vte Conf Overall Team W   L   PCT W   L   PCT East Lamar†...

 

The effect of downwash from a hovering Sikorsky Seahawk is clearly visible on the surface of water below. In aeronautics, downwash is the change in direction of air deflected by the aerodynamic action of an airfoil, wing, or helicopter rotor blade in motion, as part of the process of producing lift.[1] In helicopter aerodynamics discussions, it may be referred to as induced flow.[2] Lift on an airfoil is an example of the application of Newton's third law of motion – the for...

 

Piero di Cosimo BiografiKelahiran2 Januari 1462 Firenze Kematian12 April 1522 (60 tahun)Firenze Penyebab kematianPes KegiatanSpesialisasiRenaissance painting Pekerjaanpelukis GenrePotret Murid dariCosimo Rosselli MuridAndrea del Sarto, Fra Bartolomeo dan Pontormo Patron of the artsWangsa Medici Karya kreatifKarya terkenal(1480 (Kalender Masehi Gregorius)) Portrait of Simonetta Vespucci(1490 (Kalender Masehi Gregorius)) Madonna and Child with a Dove - Piero di Cosimo - Louvre INV 817(1495) The...

Major League Baseball team season 1990 Philadelphia PhilliesLeagueNational LeagueDivisionEastBallparkVeterans StadiumCityPhiladelphiaOwnersBill GilesGeneral managersLee ThomasManagersNick LeyvaTelevisionWTXF-TV(Harry Kalas, Chris Wheeler, Andy Musser)PRISM(Jim Barniak, Mike Schmidt, Garry Maddox)SportsChannel Philadelphia(Chris Wheeler, Andy Musser)RadioWCAU(Harry Kalas, Richie Ashburn, Andy Musser, Chris Wheeler) ← 1989 Seasons 1991 → Offseason October 11, 1989: S...

 

Egyptians of partial or full ethnic Circassian origin Ethnic group Circassians (Abkhaz-Adige) in EgyptМысырым ис Адыгэхэрالشركس في مصرPyramids in Giza, Egypt. Some Circassians live in Giza.Regions with significant populationsAlexandria, Cairo, Giza, Port Said, Sharqia GovernorateLanguagesEgyptian Arabic (predominant)CircassianFrenchTurkishReligionSunni Islam Part of a series on theCircassiansАдыгэхэр Circassia Adyghe Xabze Circassians List of notable Circas...

 

本條目存在以下問題,請協助改善本條目或在討論頁針對議題發表看法。 此條目已列出參考資料,但文內引註不足,部分內容的來源仍然不明。 (2023年3月13日)请加上合适的文內引註加以改善。 此條目或其章節极大或完全地依赖于某个单一的来源。 (2023年3月13日)请协助補充多方面可靠来源以改善这篇条目。致使用者:请搜索一下条目的标题(来源搜索:國立嘉義高級工業職�...

India's Space Activities Bill will provide for a dedicated space legislation for India. The draft was first made public for comments by the Department of Space in November 2017.[1][2] The bill covers various factors of India's space goals, including international and national obligations, defines offences and subsequent punishments, barriers of entry for private companies, liability for damages caused in space etc.[3][4] On 5 July 2020, Secretary, Department of...

 

Río Ocklawaha El río desde el puente de Ferry en StarkesUbicación geográficaCuenca Río St. JohnsNacimiento Lago GriffinDesembocadura Río St. JohnsCoordenadas 29°28′13″N 81°41′25″O / 29.4702, -81.6904Ubicación administrativaPaís  Estados UnidosEstado  FloridaCondados Lake, Putnam y MarionCuerpo de aguaLongitud 119 kmSuperficie de cuenca n/d km²Caudal medio n/d m³/sAltitud Nacimiento: n/d mDesembocadura: n/d mMapa de localización Cuenca y curso del...

 

 大日本帝国內閣第二次西園寺内閣だいにじ さいおんじないかく第14任內閣總理大臣西園寺公望肖像內閣總理大臣西園寺公望(第14任)成立日期1911年(明治44年)8月30日總辭日期1912年(大正元年)12月21日執政黨/派系立憲政友會選舉第11屆日本眾議院議員總選舉(日语:第11回衆議院議員総選挙)眾議院解散1912年(明治45年)5月15日內閣閣僚名簿(首相官邸) 第二屆�...

Binturung Binturung, Arctictis binturong Status konservasi Rentan Klasifikasi ilmiah Kerajaan: Animalia Filum: Chordata Kelas: Mammalia Ordo: Carnivora Famili: Viverridae Subfamili: Paradoxurinae Genus: ArctictisTemminck, 1824 Spesies: A. binturong Nama binomial Arctictis binturong(Raffles, 1821) Binturung atau Binturong (Arctictis binturong) adalah sejenis musang bertubuh besar, anggota suku Viverridae. Beberapa dialek Melayu menyebutnya binturong, menturung atau menturun. Dalam bahasa...

 

France Télévisions Création 7 septembre 1992 et 6 septembre 2000 Dates clés 10 août 1989 : Début de la présidence commune7 septembre 1992 : Création du regroupement France Télévision1998 : Installation dans le nouveau siège parisien1er août 2000 : Création de la holding France Télévisions7 janvier 2002 : Nouvelle identité visuelle unifiée5 janvier 2009 : Suppression de la publicité entre 20 h et 6 h4 janvier 2010 : Transformation...

 

Disambiguazione – Se stai cercando altri significati, vedi Giustizia (disambigua). Disambiguazione – Se stai cercando la giustizia nel senso di ordine giudiziario, vedi Ordinamento giudiziario in Italia. Questa voce o sezione sull'argomento teoria del diritto non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Giustizia, di Piero del Pollaiolo (1470) La ...

الحركة القومية المتحدة - باكستان البلد باكستان  تعديل مصدري - تعديل   حركة باكستان القومية المتحدة (بالأردوية: متحدہ قومی موومنٹ پاکستان)‏ هو حزب سياسي في باكستان. ظهر بسبب الانقسام داخل الحركة القومية المتحدة، أسسه فاروق ستار كحزب منفصل عن الحركة القومية المتحدة وزع�...

 

安美錦 竜児 場所入りする安美錦基礎情報四股名 杉野森 竜児→安美錦 竜児本名 杉野森 竜児愛称 あみたん生年月日 (1978-10-03) 1978年10月3日(46歳)出身 青森県西津軽郡深浦町身長 185cm体重 149kgBMI 43.54所属部屋 安治川部屋→伊勢ヶ濱部屋得意技 右四つ、寄り、出し投げ、叩き込み成績現在の番付 引退最高位 東関脇生涯戦歴 907勝908敗55休(135場所)幕内戦歴 678勝730敗47休�...