cppreference.com

Assignment operators.

(C++20)
(C++20)
(C++11)
(C++20)
(C++17)
(C++11)
(C++11)
General topics
(C++11)
-
-expression
block


/
(C++11)
(C++11)
(C++11)
(C++20)
(C++20)
(C++11)

expression
pointer
specifier

specifier (C++11)
specifier (C++11)
(C++11)

(C++11)
(C++11)
(C++11)
General
(C++11)
(C++26)

(C++11)
(C++11)
-expression
-expression
-expression
(C++11)
(C++11)
(C++17)
(C++20)
    

Assignment operators modify the value of the object.

Operator name  Syntax  Prototype examples (for class T)
Inside class definition Outside class definition
simple assignment Yes T& T::operator =(const T2& b);
addition assignment Yes T& T::operator +=(const T2& b); T& operator +=(T& a, const T2& b);
subtraction assignment Yes T& T::operator -=(const T2& b); T& operator -=(T& a, const T2& b);
multiplication assignment Yes T& T::operator *=(const T2& b); T& operator *=(T& a, const T2& b);
division assignment Yes T& T::operator /=(const T2& b); T& operator /=(T& a, const T2& b);
remainder assignment Yes T& T::operator %=(const T2& b); T& operator %=(T& a, const T2& b);
bitwise AND assignment Yes T& T::operator &=(const T2& b); T& operator &=(T& a, const T2& b);
bitwise OR assignment Yes T& T::operator |=(const T2& b); T& operator |=(T& a, const T2& b);
bitwise XOR assignment Yes T& T::operator ^=(const T2& b); T& operator ^=(T& a, const T2& b);
bitwise left shift assignment Yes T& T::operator <<=(const T2& b); T& operator <<=(T& a, const T2& b);
bitwise right shift assignment Yes T& T::operator >>=(const T2& b); T& operator >>=(T& a, const T2& b);

this, and most also return *this so that the user-defined operators can be used in the same manner as the built-ins. However, in a user-defined operator overload, any type can be used as return type (including void). can be any type including .
Definitions Assignment operator syntax Built-in simple assignment operator Assignment from an expression Assignment from a non-expression initializer clause Built-in compound assignment operator Example Defect reports See also

[ edit ] Definitions

Copy assignment replaces the contents of the object a with a copy of the contents of b ( b is not modified). For class types, this is performed in a special member function, described in copy assignment operator .

replaces the contents of the object a with the contents of b, avoiding copying if possible (b may be modified). For class types, this is performed in a special member function, described in .

(since C++11)

For non-class types, copy and move assignment are indistinguishable and are referred to as direct assignment .

Compound assignment replace the contents of the object a with the result of a binary operation between the previous value of a and the value of b .

[ edit ] Assignment operator syntax

The assignment expressions have the form

target-expr new-value (1)
target-expr op new-value (2)
target-expr - the expression to be assigned to
op - one of *=, /= %=, += -=, <<=, >>=, &=, ^=, |=
new-value - the expression (until C++11) (since C++11) to assign to the target
  • ↑ target-expr must have higher precedence than an assignment expression.
  • ↑ new-value cannot be a comma expression, because its precedence is lower.

If new-value is not an expression, the assignment expression will never match an overloaded compound assignment operator.

(since C++11)

[ edit ] Built-in simple assignment operator

For the built-in simple assignment, the object referred to by target-expr is modified by replacing its value with the result of new-value . target-expr must be a modifiable lvalue.

The result of a built-in simple assignment is an lvalue of the type of target-expr , referring to target-expr . If target-expr is a bit-field , the result is also a bit-field.

[ edit ] Assignment from an expression

If new-value is an expression, it is implicitly converted to the cv-unqualified type of target-expr . When target-expr is a bit-field that cannot represent the value of the expression, the resulting value of the bit-field is implementation-defined.

If target-expr and new-value identify overlapping objects, the behavior is undefined (unless the overlap is exact and the type is the same).

If the type of target-expr is volatile-qualified, the assignment is deprecated, unless the (possibly parenthesized) assignment expression is a or an .

(since C++20)

new-value is only allowed not to be an expression in following situations:

is of a , and new-value is empty or has only one element. In this case, given an invented variable t declared and initialized as T t = new-value , the meaning of x = new-value  is x = t. is of class type. In this case, new-value is passed as the argument to the assignment operator function selected by .   <double> z; z = {1, 2}; // meaning z.operator=({1, 2}) z += {1, 2}; // meaning z.operator+=({1, 2})   int a, b; a = b = {1}; // meaning a = b = 1; a = {1} = b; // syntax error
(since C++11)

In overload resolution against user-defined operators , for every type T , the following function signatures participate in overload resolution:

& operator=(T*&, T*);
volatile & operator=(T*volatile &, T*);

For every enumeration or pointer to member type T , optionally volatile-qualified, the following function signature participates in overload resolution:

operator=(T&, T);

For every pair A1 and A2 , where A1 is an arithmetic type (optionally volatile-qualified) and A2 is a promoted arithmetic type, the following function signature participates in overload resolution:

operator=(A1&, A2);

[ edit ] Built-in compound assignment operator

The behavior of every built-in compound-assignment expression target-expr   op   =   new-value is exactly the same as the behavior of the expression target-expr   =   target-expr   op   new-value , except that target-expr is evaluated only once.

The requirements on target-expr and new-value of built-in simple assignment operators also apply. Furthermore:

  • For + = and - = , the type of target-expr must be an arithmetic type or a pointer to a (possibly cv-qualified) completely-defined object type .
  • For all other compound assignment operators, the type of target-expr must be an arithmetic type.

In overload resolution against user-defined operators , for every pair A1 and A2 , where A1 is an arithmetic type (optionally volatile-qualified) and A2 is a promoted arithmetic type, the following function signatures participate in overload resolution:

operator*=(A1&, A2);
operator/=(A1&, A2);
operator+=(A1&, A2);
operator-=(A1&, A2);

For every pair I1 and I2 , where I1 is an integral type (optionally volatile-qualified) and I2 is a promoted integral type, the following function signatures participate in overload resolution:

operator%=(I1&, I2);
operator<<=(I1&, I2);
operator>>=(I1&, I2);
operator&=(I1&, I2);
operator^=(I1&, I2);
operator|=(I1&, I2);

For every optionally cv-qualified object type T , the following function signatures participate in overload resolution:

& operator+=(T*&, );
& operator-=(T*&, );
volatile & operator+=(T*volatile &, );
volatile & operator-=(T*volatile &, );

[ edit ] Example

Possible output:

[ edit ] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
C++11 for assignments to class type objects, the right operand
could be an initializer list only when the assignment
is defined by a user-defined assignment operator
removed user-defined
assignment constraint
C++11 E1 = {E2} was equivalent to E1 = T(E2)
( is the type of ), this introduced a C-style cast
it is equivalent
to E1 = T{E2}
C++20 compound assignment operators for volatile
-qualified types were inconsistently deprecated
none of them
is deprecated
C++11 an assignment from a non-expression initializer clause
to a scalar value would perform direct-list-initialization
performs copy-list-
initialization instead
C++20 bitwise compound assignment operators for volatile types
were deprecated while being useful for some platforms
they are not
deprecated

[ edit ] See also

Operator precedence

Operator overloading

Common operators

a = b
a += b
a -= b
a *= b
a /= b
a %= b
a &= b
a |= b
a ^= b
a <<= b
a >>= b

++a
--a
a++
a--

+a
-a
a + b
a - b
a * b
a / b
a % b
~a
a & b
a | b
a ^ b
a << b
a >> b

!a
a && b
a || b

a == b
a != b
a < b
a > b
a <= b
a >= b
a <=> b

a[...]
*a
&a
a->b
a.b
a->*b
a.*b

function call
a(...)
comma
a, b
conditional
a ? b : c
Special operators

converts one type to another related type
converts within inheritance hierarchies
adds or removes -qualifiers
converts type to unrelated type
converts one type to another by a mix of , , and
creates objects with dynamic storage duration
destructs objects previously created by the new expression and releases obtained memory area
queries the size of a type
queries the size of a (since C++11)
queries the type information of a type
checks if an expression can throw an exception (since C++11)
queries alignment requirements of a type (since C++11)

for Assignment operators
  • Recent changes
  • Offline version
  • What links here
  • Related changes
  • Upload file
  • Special pages
  • Printable version
  • Permanent link
  • Page information
  • In other languages
  • This page was last modified on 25 January 2024, at 23:41.
  • Privacy policy
  • About cppreference.com
  • Disclaimers

Powered by MediaWiki

01 Career Opportunities

02 beginner, 03 intermediate, 04 advanced, 05 training programs, c programming assignment operators, free c programming online course with certificate, what is an assignment operator in c, types of assignment operators in c.

1. Simple Assignment Operator (=)

Example of simple assignment operator.

2. Compound Assignment Operators

+=addition assignmentIt adds the right operand to the left operand and assigns the result to the left operand.
-=subtraction assignmentIt subtracts the right operand from the left operand and assigns the result to the left operand.
*=multiplication assignmentIt multiplies the right operand with the left operand and assigns the result to the left operand
/=division assignmentIt divides the left operand with the right operand and assigns the result to the left operand.
%=modulo assignmentIt takes modulus using two operands and assigns the result to the left operand.

Example of Augmented Arithmetic and Assignment Operators

&=bitwise AND assignmentIt performs the bitwise AND operation on the variable with the value on the right
|=bitwise OR assignmentIt performs the bitwise OR operation on the variable with the value on the right
^=bitwise XOR assignmentIt performs the bitwise XOR operation on the variable with the value on the right
<<=bitwise left shift assignmentShifts the bits of the variable to the left by the value on the right
>>=bitwise right shift assignmentShifts the bits of the variable to the right by the value on the right

Example of Augmented Bitwise and Assignment Operators

Practice problems on assignment operators in c, 1. what will the value of "x" be after the execution of the following code, 2. after executing the following code, what is the value of the number variable, benefits of using assignment operators, best practices and tips for using the assignment operator, live classes schedule.

Filling Fast
Filling Fast
Filling Fast
Filling Fast
Filling Fast
Filling Fast
Filling Fast
Filling Fast
Filling Fast
Filling Fast

About Author

Home » Learn C Programming from Scratch » C Assignment Operators

C Assignment Operators

Summary : in this tutorial, you’ll learn about the C assignment operators and how to use them effectively.

Introduction to the C assignment operators

An assignment operator assigns the vale of the right-hand operand to the left-hand operand. The following example uses the assignment operator (=) to assign 1 to the counter variable:

After the assignmment, the counter variable holds the number 1.

The following example adds 1 to the counter and assign the result to the counter:

The = assignment operator is called a simple assignment operator. It assigns the value of the left operand to the right operand.

Besides the simple assignment operator, C supports compound assignment operators. A compound assignment operator performs the operation specified by the additional operator and then assigns the result to the left operand.

The following example uses a compound-assignment operator (+=):

The expression:

is equivalent to the following expression:

The following table illustrates the compound-assignment operators in C:

OperatorOperation PerformedExampleEquivalent expression
Multiplication assignmentx *= yx = x * y
Division assignmentx /= yx = x / y
Remainder assignmentx %= yx = x % y
Addition assignmentx += yx = x + y
Subtraction assignmentx -= yx = x – y
Left-shift assignmentx <<= yx = x <<=y
Right-shift assignmentx >>=yx = x >>= y
Bitwise-AND assignmentx &= yx = x & y
Bitwise-exclusive-OR assignmentx ^= yx = x ^ y
Bitwise-inclusive-OR assignmentx |= yx = x | y
  • A simple assignment operator assigns the value of the left operand to the right operand.
  • A compound assignment operator performs the operation specified by the additional operator and then assigns the result to the left operand.

LOGIN to our website, or REGISTER

logo

Understanding Compound Assignment Operators in C

Understanding compound assignment operators in c - a web page design perspective, introduction, welcome to our web page design guide on compound assignment operators in c.

At [Your Company Name], we believe in creating visually appealing and informative content. In this guide, we'll delve into the world of Compound Assignment Operators in C and explore how they can be utilized to enhance efficiency and readability in your code.

Section 1: What are Compound Assignment Operators?

Compound Assignment Operators in C are a set of operators that combine arithmetic and assignment operations into a single step. They are a convenient way to update the value of a variable based on its current value.

Consider the following code snippet:

In this example, the += operator adds 3 to the current value of x and assigns the result back to x.

Section 2: Commonly Used Compound Assignment Operators

1. += (addition assignment).

This operator adds the right operand to the left operand and assigns the result to the left operand.

2. -= (Subtraction Assignment)

This operator subtracts the right operand from the left operand and assigns the result to the left operand.

3. *= (Multiplication Assignment)

This operator multiplies the left operand by the right operand and assigns the result to the left operand.

4. /= (Division Assignment)

This operator divides the left operand by the right operand and assigns the result to the left operand.

5. %= (Modulus Assignment)

This operator performs a modulus operation on the left operand with the right operand and assigns the result to the left operand.

Section 3: Advantages of Using Compound Assignment Operators

1. conciseness and readability.

By combining the operation and assignment, compound operators make code more concise and easier to read.

2. Improved Efficiency

They can lead to more efficient code execution, especially in situations where the same variable is used in multiple operations.

3. Reduced Risk of Errors

Using compound assignment operators reduces the chance of making mistakes that can occur when writing separate arithmetic and assignment statements.

Section 4: Best Practices for Utilizing Compound Assignment Operators

1. use appropriately.

While compound assignment operators are powerful tools, it's essential to use them judiciously. Overuse or misuse can lead to code that is difficult to understand.

2. Ensure Compatibility

Make sure that the operands on both sides of the operator are compatible. For example, adding an integer to a float using += might lead to unexpected results.

3. Comment for Clarity

In complex operations, consider adding comments to explain the logic behind the use of compound assignment operators.

Congratulations! You've now gained a solid understanding of Compound Assignment Operators in C from a web page design perspective. By incorporating these operators into your code, you can create more efficient and readable programs. If you have any further questions or need assistance with web page design, feel free to reach out to us at [Your Contact Information].

Happy coding!

Top Resources

  • Learn-C.org
  • C Programming at LearnCpp.com
  • GeeksforGeeks - C Programming Language
  • C Programming on Tutorialspoint
  • Codecademy - Learn C
  • CProgramming.com
  • C Programming Wikibook
  • C Programming - Reddit Community
  • C Programming Language - Official Documentation
  • GitHub - Awesome C
  • HackerRank - C Language
  • LeetCode - C

Enroll Now:

[   C-Programming From Scratch to Advanced 2023-2024]   "Start Supercharging Your Productivity!"

Contact Us:

  • For any inquiries, please email us at  [ [email protected] ].
  • Follow us on insta  [  electro4u_offical_  ] for updates and tips.

Note:  If you encounter any issues or specific errors when running this program, please let me know and I'll be happy to help debug them!

c compound assignment

Related Blogs

What are the compilation stages in c and it's commands, what are the types of errors are occurred in c , post comments..

No comments yet, Be the first to comment.

Blog Categories.

  • C Programming
  • Assembly language
  • 8051 micro-controller
  • MERN Full Stack
  • Web development
  • Rust Programming
  • Dart Programming
  • Swift Programming
  • Julia programming language

Popular Tags.

  • post-quantum cryptography
  • csrf prevention
  • laravel security
  • csrf attack laravel
  • csrf token laravel
  • laravel csrf protection
  • Install Laravel UI for Authentication Scaffolding
  • Tech project
  • Infotainment system

Featured Course.

C-programming from scratch to advanced 2023-2024.

Compound-Assignment Operators

  • Java Programming
  • PHP Programming
  • Javascript Programming
  • Delphi Programming
  • C & C++ Programming
  • Ruby Programming
  • Visual Basic
  • M.A., Advanced Information Systems, University of Glasgow

Compound-assignment operators provide a shorter syntax for assigning the result of an arithmetic or bitwise operator. They perform the operation on the two operands before assigning the result to the first operand.

Compound-Assignment Operators in Java

Java supports 11 compound-assignment operators:

Example Usage

To assign the result of an addition operation to a variable using the standard syntax:

But use a compound-assignment operator to effect the same outcome with the simpler syntax:

  • Java Expressions Introduced
  • Understanding the Concatenation of Strings in Java
  • Conditional Operators
  • Conditional Statements in Java
  • Working With Arrays in Java
  • Declaring Variables in Java
  • If-Then and If-Then-Else Conditional Statements in Java
  • How to Use a Constant in Java
  • Common Java Runtime Errors
  • What Is Java?
  • What Is Java Overloading?
  • Definition of a Java Method Signature
  • What a Java Package Is In Programming
  • Java: Inheritance, Superclass, and Subclass
  • Understanding Java's Cannot Find Symbol Error Message
  • Using Java Naming Conventions

c compound assignment

  • Introduction to C
  • Download MinGW GCC C Compiler
  • Configure MinGW GCC C Compiler
  • The First C Program
  • Data Types in C
  • Variables, Keywords, Constants
  • If Statement
  • If Else Statement
  • Else If Statement
  • Nested If Statement
  • Nested If Else Statement
  • Do-While Loop
  • Break Statement
  • Switch Statement
  • Continue Statement
  • Goto Statement
  • Arithmetic Operator in C
  • Increment Operator in C
  • Decrement Operator in C
  • Compound Assignment Operator
  • Relational Operator in C
  • Logical Operator in C
  • Conditional Operator in C
  • 2D array in C
  • Functions with arguments
  • Function Return Types
  • Function Call by Value
  • Function Call by Reference
  • Recursion in C
  • Reading String from console
  • C strchr() function
  • C strlen() function
  • C strupr() function
  • C strlwr() function
  • C strcat() function
  • C strncat() function
  • C strcpy() function
  • C strncpy() function
  • C strcmp() function
  • C strncmp() function
  • Structure with array element
  • Array of structures
  • Formatted Console I/O functions
  • scanf() and printf() function
  • sscanf() and sprintf() function
  • Unformatted Console I/O functions
  • getch(), getche(), getchar(), gets()
  • putch(), putchar(), puts()
  • Reading a File
  • Writing a File
  • Append to a File
  • Modify a File

Advertisement

+= operator

  • Add operation.
  • Assignment of the result of add operation.
  • Statement i+=2 is equal to i=i+2 , hence 2 will be added to the value of i, which gives us 4.
  • Finally, the result of addition, 4 is assigned back to i, updating its original value from 2 to 4.

Example with += operator

-= operator.

  • Subtraction operation.
  • Assignment of the result of subtract operation.
  • Statement i-=2 is equal to i=i-2 , hence 2 will be subtracted from the value of i, which gives us 0.
  • Finally, the result of subtraction i.e. 0 is assigned back to i, updating its value to 0.

Example with -= operator

*= operator.

  • Multiplication operation.
  • Assignment of the result of multiplication operation.
  • Statement i*=2 is equal to i=i*2 , hence 2 will be multiplied with the value of i, which gives us 4.
  • Finally, the result of multiplication, 4 is assigned back to i, updating its value to 4.

Example with *= operator

/= operator.

  • Division operation.
  • Assignment of the result of division operation.
  • Statement i/=2 is equal to i=i/2 , hence 4 will be divided by the value of i, which gives us 2.
  • Finally, the result of division i.e. 2 is assigned back to i, updating its value from 4 to 2.

Example with /= operator

Please share this article -.

Facebook

Please Subscribe

Decodejava Facebook Page

Notifications

Please check our latest addition C#, PYTHON and DJANGO

Using Compound Assignment Operators in C: A Beginner's Guide

An assignment operator is used for assigning a value to a variable. The most common assignment operator is = (equal). The left side operand of the assignment operator is a variable and right side operand of the assignment operator is a value. The value on the right side must be of the same data-type of the variable on the left side otherwise the compiler will raise an error.

Compound OperatorSample ExpressionExpanded Form
+= a+=5 a=a+5
-= a-=6 a=a-6
*= a*=7 a=a*7
/= a/=4 a=a/4
%= a%=9 a=a%9

The code is a C program that demonstrates the use of compound assignment operators in C. Here is an explanation of each line of the code:

  • int a=10,b=5; declares two variables a and b of type int and assigns them the values 10 and 5 respectively.
  • a+=b; is the compound assignment operator +=, it performs a+b and assigns the value to a. It is equivalent to a=a+b.
  • printf("A : %d",a); prints the value of a which is 15, this is the result after using += operator.
  • a-=10; is the compound assignment operator -=, it performs a-10 and assigns the value to a. It is equivalent to a=a-10.
  • printf("\nA : %d",a); prints the value of a which is 5, this is the result after using -= operator.
  • return 0; The return 0; statement is used to indicate that the main function has completed successfully. The value 0 is returned as the exit status of the program, which indicates a successful execution.

When you run this code, it will perform the compound assignment operation on variables and print the results in the console.

Source Code

List of programs.

  • C Introduction
  • Hello World
  • Basic Addition
  • Data Types in C
  • Variables and Literals in C
  • Arithmetic Operator in C
  • Example for Arithmetic Operator in C
  • Assignment Operators in C Program
  • Relational Operators in C Program
  • Logical Operators in C Program
  • Increment and Decrement Operators in C Program
  • Bitwise Operators in C Program
  • if Statement in C Program
  • if else Statement in C Program
  • else if Statement in C Program
  • Nested if Statement in C Program
  • Switch Statement in C Program
  • Conditional Operator Statement in C Program
  • School Management in C Program
  • Library Management in C Program
  • Find the given number is odd or even in C Program
  • Check the given number is vowels or not in C Program
  • Check the given number is Armstrong or not in C Program
  • Hotel Management in C Program
  • Goto Statement in C Program
  • Hotel Management using goto in C Program
  • While Loop in C Program
  • Do while Loop in C Program
  • For Loop in C Program
  • Nested For Loop in C Program
  • Break and Continue Statement in C Program
  • ASCII Values in C Program
  • Single Dimensional Array in C Program
  • 2D Array in C Program
  • String Function in C Program
  • Math Function in C Program
  • Function in C Program
  • No Return Without Argument Function in C Program
  • No Return With Argument Function in C Program
  • Return Without Argument Function in C Program
  • Return With Argument Function in C Program
  • Recursion Function in C Program
  • Call by Reference Function in C Program
  • Local Variable in C Program
  • Global Variable in C Program
  • Static Variable in C Program
  • Enumeration or enum in C Program
  • Single pointer in C Program
  • Double & Triple pointer in C Program
  • Pointer Arithmetic in C Program
  • Pointer Handle Array Values in C Program
  • Void * Pointer in C Program
  • Malloc Function in C Program
  • Calloc Function in C Program
  • Realloc Function in C Program
  • Free Function in C Program
  • Dangling Pointer in C Program
  • Using Const in Pointer in C Program
  • Structure in C Program
  • Local and Global Structure in C Program
  • Typedef in C Program
  • Initializing & Accessing the Structure Members in C Program
  • Access members of structure using pointer in C Program
  • Structure as function arguments in C Program
  • Array of Objects Structure in C Program
  • Union in C Program
  • Shop Management using Structure and Union in C Program
  • Input and output functions in C Program
  • Preprocessor Directives in C Program
  • Read File in C Program
  • Write File in C Program
  • Multiplication tables in C Program
  • Total no of even and odd numbers in an array in C Program
  • Count Alphabets Digits and Special Characters in a String in C Program
  • Convert string to uppercase in C Program
  • Convert string to lowercase in C Program
  • Display Fibonacci Sequence in C Program
  • Greatest of n numbers in an array in C Program

Sample Programs

Switch case in c.

  • Present Elevator Position
  • Check Vowel or Consonent
  • Hotel Management using Swtich Case

Conditional Operators in C

  • Find Greatest Number
  • Check Find Smallest Number
  • Check Number Equal or Not
  • Check Char. Vowel or Consonent
  • Check Character Capital or Small

Goto Statement in C

  • Consecutive Numbers
  • Print Text Using Goto
  • Print Odd Numbers
  • Printing Tables
  • Printing Sum of Values
  • Printing Reverse Table
  • Print Factorial in C

While Loop Example Programs

  • Print numbers using While Loop
  • Armstrong Number using While Loop
  • Print Odd and Even numbers
  • Print Positive and Negative numbers
  • Print Prime or Composite Number Upto Limit
  • Print Prime or Composite Number
  • Reverse table using While Loop
  • Print table using While Loop
  • Covert Decimal to Binary using While Loop

Looping Statements in C

For loop example programs.

  • Print Value upto limit
  • Print Number upto limit
  • Armstrong Number using For Loop
  • Square Pattern using For Loop
  • Flag Pattern using For Loop
  • Diamond Pattern using For Loop
  • Triangle Facing Downward using For Loop
  • Triangle Facing upside using For Loop
  • Right Angle Triangle facing left
  • Right Angle Triangle facing right
  • Reverse Number using For Loop
  • Prime Number using For Loop
  • Print Number divisible by 7
  • Print tables using For Loop
  • Reverse tables using For Loop
  • Separate odd and even numbers
  • Check prime or composite number
  • Separate positive and negative number
  • For Loop Patterns
  • Square Pattern Outline using For Loop
  • Triangle Outline Pattern
  • Diamond Pattern Outline

Array Examples in C

One dimensional array.

  • Add Elements to the Array
  • Arrange array elements in Ascending
  • Arrange array elements in Descending
  • Insert an element using Array
  • Update an element using Array
  • Delete an element using Array
  • Interchange an element using Array
  • Reverse an element using Array
  • Odd or Even Number using Array
  • Positive and Negative Numbers using Array
  • Armstrong Number 100 to 999
  • Greatest Number using Array
  • Smallest Number using Array
  • Print values divisible by 7 using Array
  • Convert binary to decimal using Array
  • Convert decimal to binary using Array
  • Convert decimal to octal using Array

Two Dimensional Array in C

  • Print Two Dimensional Array
  • Array Addition in Two-Dimenional Array
  • Array Subtraction in Two-Dimensional Array
  • Array Multiplication using Array
  • Lower Triangular Matrix using Array
  • Upper Triangluar Matrix using Array
  • Print Unit Matrix using Array
  • Check and Print Unit Matrix

String Example Programs in C

  • Print text using String
  • String Example
  • String Comparison in C
  • String Concatenation in C
  • String Copy Example in C
  • Convert Uppercase to Lowercase
  • Remove Duplicate String
  • Reverse text using String
  • Toggle Case using String
  • Conver text into Capital or Small
  • Convert Lowercase to Uppercase
  • Convert text into Ascending Order using
  • Capitalising the first letter
  • Check given strings Equal or Not
  • Copy String using Predefined Function
  • String Length using Predefined Function
  • String Length without Predefined Function
  • Uppercase to Lowercase using Predefined Function
  • Check Palindrome or Not

Functions Example Programs in C

  • Addition using return type and arguments
  • Print marks using return type & arguments
  • Function with no return and with arguments in c
  • Print tables without arguments

Learn All in Tamil © Designed & Developed By Tutor Joes | Privacy Policy | Terms & Conditions

  • C Data Types
  • C Operators
  • C Input and Output
  • C Control Flow
  • C Functions
  • C Preprocessors
  • C File Handling
  • C Cheatsheet
  • C Interview Questions

Assignment Operators in C

c compound assignment

Assignment operators are used for assigning value to a variable. The left side operand of the assignment operator is a variable and right side operand of the assignment operator is a value. The value on the right side must be of the same data-type of the variable on the left side otherwise the compiler will raise an error.

Different types of assignment operators are shown below:

1. “=”: This is the simplest assignment operator. This operator is used to assign the value on the right to the variable on the left. Example:

2. “+=” : This operator is combination of ‘+’ and ‘=’ operators. This operator first adds the current value of the variable on left to the value on the right and then assigns the result to the variable on the left. Example:

If initially value stored in a is 5. Then (a += 6) = 11.

3. “-=” This operator is combination of ‘-‘ and ‘=’ operators. This operator first subtracts the value on the right from the current value of the variable on left and then assigns the result to the variable on the left. Example:

If initially value stored in a is 8. Then (a -= 6) = 2.

4. “*=” This operator is combination of ‘*’ and ‘=’ operators. This operator first multiplies the current value of the variable on left to the value on the right and then assigns the result to the variable on the left. Example:

If initially value stored in a is 5. Then (a *= 6) = 30.

5. “/=” This operator is combination of ‘/’ and ‘=’ operators. This operator first divides the current value of the variable on left by the value on the right and then assigns the result to the variable on the left. Example:

If initially value stored in a is 6. Then (a /= 2) = 3.

Below example illustrates the various Assignment Operators:

Please Login to comment...

Similar reads.

  • C-Operators
  • cpp-operator

Improve your Coding Skills with Practice

 alt=

What kind of Experience do you want to share?

  • Trending Categories

Data Structure

  • Selected Reading
  • UPSC IAS Exams Notes
  • Developer's Best Practices
  • Questions and Answers
  • Effective Resume Writing
  • HR Interview Questions
  • Computer Glossary

Compound Assignment Operators in C++

The compound assignment operators are specified in the form e1 op= e2, where e1 is a modifiable l-value not of const type and e2 is one of the following −

  • An arithmetic type
  • A pointer, if op is + or –

The e1 op= e2 form behaves as e1 = e1 op e2, but e1 is evaluated only once.

The following are the compound assignment operators in C++ −

Operators
Description
*=
Multiply the value of the first operand by the value of the second operand; store the result in the object specified by the first operand.
/=
Divide the value of the first operand by the value of the second operand; store the result in the object specified by the first operand.
%=
Take modulus of the first operand specified by the value of the second operand; store the result in the object specified by the first operand.
+=
Add the value of the second operand to the value of the first operand; store the result in the object specified by the first operand.
–=
Subtract the value of the second operand from the value of the first operand; store the result in the object specified by the first operand.
<<=
Shift the value of the first operand left the number of bits specified by the value of the second operand; store the result in the object specified by the first operand.
>>=
Shift the value of the first operand right the number of bits specified by the value of the second operand; store the result in the object specified by the first operand.
&=
Obtain the bitwise AND of the first and second operands; store the result in the object specified by the first operand.
^=
Obtain the bitwise exclusive OR of the first and second operands; store the result in the object specified by the first operand.
|=
Obtain the bitwise inclusive OR of the first and second operands; store the result in the object specified by the first operand.

Let's have a look at an example using some of these operators −

This will give the output −

Note that Compound assignment to an enumerated type generates an error message. If the left operand is of a pointer type, the right operand must be of a pointer type or it must be a constant expression that evaluates to 0. If the left operand is of an integral type, the right operand must not be of a pointer type.

Govinda Sai

  • Related Articles
  • Compound assignment operators in C#
  • Compound assignment operators in Java\n
  • Perl Assignment Operators
  • Assignment operators in Dart Programming
  • Compound operators in Arduino
  • What is the difference between = and: = assignment operators?
  • Passing the Assignment in C++
  • Airplane Seat Assignment Probability in C++
  • Copy constructor vs assignment operator in C++
  • Unary operators in C/C++
  • Ternary Operators in C/C++
  • # and ## Operators in C ?
  • Operators Precedence in C++
  • Unary operators in C++
  • Conversion Operators in C++

Kickstart Your Career

Get certified by completing the course

  • Stack Overflow for Teams Where developers & technologists share private knowledge with coworkers
  • Advertising & Talent Reach devs & technologists worldwide about your product, service or employer brand
  • OverflowAI GenAI features for Teams
  • OverflowAPI Train & fine-tune LLMs
  • Labs The future of collective knowledge sharing
  • About the company Visit the blog

Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Get early access and see previews of new features.

Is chained assignment in C/C++ undefined behavior?

Ignoring the types of variables, is expression like a=b=c has defined behavior in both C and C++?

If so, can any one give me official evidence, like quotes from the standard, please?

P.S. I searched the chained assignment but everything I got is associativity, but I didn't find any text about that in the C99 standard. Maybe I did it wrong? hoping anyone can help me.

  • variable-assignment
  • assignment-operator

Vlad from Moscow's user avatar

  • Are we assuming that a , b and c are not the same variable? If they are the same it is more intereting . –  Shafik Yaghmour Commented Mar 24, 2014 at 12:16
  • 1 I don't think it warrants any explicit mention in the standards, because an assignment is just an expression which returns the result of the assignment, so a=b=c is equivalent to a=(b=c) and this is no different, in essence, than a=b+c . –  Paul R Commented Mar 24, 2014 at 12:16
  • 1 a=b=c hasn't anything with the associativity to do. It will be interpreted as a=(b=c), also b=c;a=(b==0)?1:0 . Sorry, I didn't see qny reason to dig in the standard, it is at the beginning of every c/c++ book. –  peterh Commented Mar 24, 2014 at 12:18

4 Answers 4

From the C++ Standard

5.17 Assignment and compound assignment operators [expr.ass] 1 The assignment operator (=) and the compound assignment operators all group right-to-left. All require a modifiable lvalue as their left operand and return an lvalue referring to the left operand . The result in all cases is a bit-field if the left operand is a bit-field. In all cases, the assignment is sequenced after the value computation of the right and left operands, and before the value computation of the assignment expression.

And an example from there

From the C Standard

6.5.16 Assignment operators Semantics 3 An assignment operator stores a value in the object designated by the left operand. An assignment expression has the value of the left operand after the assignment,111) but is not an lvalue . The type of an assignment expression is the type the left operand would have after lvalue conversion. The side effect of updating the stored value of the left operand is sequenced after the value computations of the left and right operands. The evaluations of the operands are unsequenced.

As you see there is a difference. In C++ the assignment operator returns an lvalue referring to the left operand while in C it returns the value of the left operand after the assignment,111) but is not an lvalue .

It means that in C++ the following code is valid

while in C the compiler shall issue an error.

  • Are all operations in C/C++ grouped from right to left? –  martixingwei Commented Mar 24, 2014 at 20:16
  • @martixingwei No they are not. You should read the description of each category of operators. For example expressions with unary operators group right to left while postfix expressions group left to right. –  Vlad from Moscow Commented Mar 24, 2014 at 20:19

According to §6.5.16 (3) of C99:

An assignment expression has the value of the left operand after the assignment, [...]

Together with right-associativity of evaluation, and assuming non-volatile a , b , and c , it means that a = b = c is equivalent to a = (b = c) , and again equivalent to b = c; a = b .

user4815162342's user avatar

  • 2 I have not found this quite true in practice. Or at least gcc C99 implementation is not up to scratch. a = b = c; looks to be equivalent to b = c; a = c;. Try making b a volatile variable: 'a = b = c;' does not generate read of b. While 'b = c; a = b;' would generate reread of b after write. –  user377178 Commented Oct 16, 2017 at 7:53
  • @user377178 Good catch. The answer was written informally to explain the semantics, and assumed local and non-volatile variables where all reads and writes can be reordered or even entirely omitted. I've now made the assumption explicit. Another option would be to describe b = c as _tmp = c; b = _tmp and therefore a = b = c as equivalent to _tmp = c; b = _tmp; a = _tmp , but that seems like sacrificing beginner-level clarity for the sake of expert-level accuracy. –  user4815162342 Commented Oct 16, 2017 at 8:31

It C, and C++, assignment is right associative and also an expression, so

Is treated as:

Where the expression b=c evaluates to whatever is in b after the assignment. Note that I say "whatever` as it's possible (but not advisable) in C++ to provide an assigment function that does something other that assignment!

Sean's user avatar

  • 2 "Whatever" also matters for C. Unless the value c is representable in the type of b , b=c has value different from c . –  R.. GitHub STOP HELPING ICE Commented Mar 24, 2014 at 13:28

It is all about associativity. You can rewrite a=b=c as a=(b=c) . And the result of an assignment ( b=c ) is the value of the last assigned variable ( b ).

Bart Friederichs's user avatar

Your Answer

Reminder: Answers generated by artificial intelligence tools are not allowed on Stack Overflow. Learn more

Sign up or log in

Post as a guest.

Required, but never shown

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy .

Not the answer you're looking for? Browse other questions tagged c++ c variable-assignment assignment-operator or ask your own question .

  • The Overflow Blog
  • Scaling systems to manage all the metadata ABOUT the data
  • Navigating cities of code with Norris Numbers
  • Featured on Meta
  • We've made changes to our Terms of Service & Privacy Policy - July 2024
  • Bringing clarity to status tag usage on meta sites
  • Feedback requested: How do you use tag hover descriptions for curating and do...

Hot Network Questions

  • How predictable are the voting records of members of the US legislative branch?
  • Why is this white line between the two vertical boxes?
  • What are these commands in the code?
  • Is an invalid date considered the same as a NULL value?
  • Rendering React SPAs within Salesforce
  • Were there mistakes in converting Dijkstra's Algol-60 compiler to Pascal?
  • Can a Statute of Limitations claim be rejected by the court?
  • Non-linear recurrence for rational sequences with generating function with radicals?
  • Why does editing '/etc/shells' file using 'sudo open' shows an error saying I don't own the file?
  • What is the meaning of "Exit, pursued by a bear"?
  • Next Bitcoin Core client version
  • Old ESTA overwritten by new ESTA?
  • Why did evolution fail to protect humans against sun?
  • Prove that there's a consecutive sequence of days during which I took exactly 11 pills
  • What connotation does "break out the checkbook" have?
  • Power line crossing data lines via the ground plane
  • Age is just a number!
  • Parasols on an Alderson Disk
  • How would a culture living in an extremely vertical environment deal with dead bodies?
  • What does "hypothecate" mean?
  • Advice needed: Team needs developers, but company isn't posting jobs
  • Sulphur smell in Hot water only
  • Caulking Bathtub and Wall Surround to prevent water leak
  • Word to classify what powers a god is associated with?

c compound assignment

COMMENTS

  1. C Compound Assignment

    The compound-assignment operators combine the simple-assignment operator with another binary operator. Compound-assignment operators perform the operation specified by the additional operator, then assign the result to the left operand. For example, a compound-assignment expression such as. expression1 += expression2. can be understood as.

  2. Assignment operators

    Assignment performs implicit conversion from the value of rhs to the type of lhs and then replaces the value in the object designated by lhs with the converted value of rhs . Assignment also returns the same value as what was stored in lhs (so that expressions such as a = b = c are possible). The value category of the assignment operator is non ...

  3. Assignment operators

    For all other compound assignment operators, the type of target-expr must be an arithmetic type. In overload resolution against user-defined operators , for every pair A1 and A2 , where A1 is an arithmetic type (optionally volatile-qualified) and A2 is a promoted arithmetic type, the following function signatures participate in overload resolution:

  4. What is the difference between += and =+ C assignment operators

    20. In modern C, or even moderately ancient C, += is a compound assignment operator, and =+ is parsed as two separate tokens. = and +. Punctuation tokens are allowed to be adjacent. So if you write: x += y; it's equivalent to. x = x + y; except that x is only evaluated once (which can matter if it's a more complicated expression).

  5. C Programming Assignment Operators

    Assignment Operators in C are used to assign values to the variables. The left side operand is called a variable and the right side operand is the value. ... Use Compound Assignment Operators for Clarity and Efficiency . While performing arithmetic operations with the same variable, use compound assignment operators. x += 5; // Clear and ...

  6. C Assignment Operators

    Code language:C++(cpp) The = assignment operator is called a simple assignment operator. It assigns the value of the left operand to the right operand. Besides the simple assignment operator, C supports compound assignment operators. A compound assignment operator performs the operation specified by the additional operator and then assigns the ...

  7. Assignment Operators In C [ Full Information With Examples ]

    Examples of compound assignment operators are: (Example: + =, - =, * =, / =,% =, & =, ^ =) Look at these two statements: x = 100; x = x + 5; Here in this example, adding 5 to the x variable in the second statement is again being assigned to the x variable. Compound Assignment Operators provide us with the C language to perform such operation ...

  8. Assignment operators

    Compound assignment. The compound assignment operators are shown in the Assignment operators table. These operators have the form e1 op= e2, where e1 is a non-const modifiable l-value and e2 is: an arithmetic type. a pointer, if op is + or -a type for which there exists a matching operator *op*= overload for the type of e1

  9. PDF Compound assignment operators

    The Java language specification says that: The compound assignment E1 op= E2 is equivalent to [i.e. is syntactic sugar for] E1 = (T) ((E1) op (E2)) where T is the type of E1, except that E1 is evaluated only once. We note two important points: The expression is cast to the type of E1 before the assignment is made (the cast is in red above) E1 ...

  10. Assignment Operators in C

    Simple assignment operator. Assigns values from right side operands to left side operand. C = A + B will assign the value of A + B to C. +=. Add AND assignment operator. It adds the right operand to the left operand and assign the result to the left operand. C += A is equivalent to C = C + A. -=.

  11. Exploring Compound Assignment Operators in C

    Section 3: Advantages of Using Compound Assignment Operators. 1. Conciseness and Readability. By combining the operation and assignment, compound operators make code more concise and easier to read. 2. Improved Efficiency. They can lead to more efficient code execution, especially in situations where the same variable is used in multiple ...

  12. Compound assignment operators

    The compound assignment operators consist of a binary operator and the simple assignment operator. They perform the operation of the binary operator on both operands and store the result of that operation into the left operand, which must be a modifiable lvalue. The following table shows the operand types of compound assignment expressions: The ...

  13. What Is a Compound-Assignment Operator?

    Compound-Assignment Operators in Java. Java supports 11 compound-assignment operators: += assigns the result of the addition. -= assigns the result of the subtraction. *= assigns the result of the multiplication. /= assigns the result of the division. %= assigns the remainder of the division. &= assigns the result of the logical AND.

  14. C

    A special case scenario for all the compound assigned operators. int i= 2 ; i+= 2 * 2 ; //equals to, i = i+(2*2); In all the compound assignment operators, the expression on the right side of = is always calculated first and then the compound assignment operator will start its functioning. Hence in the last code, statement i+=2*2; is equal to i ...

  15. Compound Assignment Operators in C

    What your ancient compiler is doing is correctly following the C grammar rules and is grouping the expression as. a += (a += (a += 2)) But grouping is not the same as sequencing. From this point the behaviour is undefined. Your compiler appears to evaluate the above to. a += (a += 7) followed by. a += 14.

  16. Using Compound Assignment Operators in C: A Beginner's Guide

    The code is a C program that demonstrates the use of compound assignment operators in C. Here is an explanation of each line of the code: int a=10,b=5; declares two variables a and b of type int and assigns them the values 10 and 5 respectively. a+=b; is the compound assignment operator +=, it performs a+b and assigns the value to a. It is equivalent to a=a+b.

  17. Assignment Operators in C

    1. "=": This is the simplest assignment operator. This operator is used to assign the value on the right to the variable on the left. Example: a = 10; b = 20; ch = 'y'; 2. "+=": This operator is combination of '+' and '=' operators. This operator first adds the current value of the variable on left to the value on the right and ...

  18. Use compound assignment (IDE0054 and IDE0074)

    These rules concern the use of compound assignment. IDE0074 is reported for coalesce compound assignments and IDE0054 is reported for other compound assignments. Options. The option value specifies whether or not compound assignments are desired. For information about configuring options, see Option format. dotnet_style_prefer_compound_assignment

  19. Compound Assignment Operators in C++

    The compound assignment operators are specified in the form e1 op= e2, where e1 is a modifiable l-value not of const type and e2 is one of the following −. The e1 op= e2 form behaves as e1 = e1 op e2, but e1 is evaluated only once. The following are the compound assignment operators in C++ −. Multiply the value of the first operand by the ...

  20. c

    No, the only way that assignment can be evaluated here is right to left. First, note that x *= 99, for example, is shorthand for x = x * 99. With that said, x *= y = z = 4; is equivalent to. z = 4; y = z; x *= y; // This is shorthand for x = x * 4 Consider what would happen if you tried to evaluate it the other way around:

  21. Is chained assignment in C/C++ undefined behavior?

    5.17 Assignment and compound assignment operators [expr.ass] 1 The assignment operator (=) and the compound assignment operators all group right-to-left. All require a modifiable lvalue as their left operand and return an lvalue referring to the left operand. The result in all cases is a bit-field if the left operand is a bit-field.