Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

The GNU C Programming Tutorial - More Special Assignments

Node:More Special Assignments, Next:, Previous:Special Assignment Operators ++ --, Up:Expressions and operators



More Special Assignments

Like ++ and --, the following operators are short ways of writing longer expressions. Consider the following statement:

variable = variable + 23;

In C, this would be a long-winded way of adding 23 to variable. It could be done more simply with the general increment operator +=, as in this example:

variable += 23;

This performs exactly the same operation. Similarly, the following two statements are equivalent:

variable1 = variable1 + variable2;
variable1 += variable2;

There are a handful of these operators. For example, one for subtraction:

variable = variable - 42;
variable -= 42;

More surprisingly, perhaps, there is one for multiplication:

variable = variable * 2;
variable *= 2;

The main arithmetic operators all follow this pattern:

+=
addition assignment operator
-=
subtraction assignment operator
*=
multiplication assignment operator
/=
division assignment operator (floating point and integers)
%=
remainder assignment operator (integers only)

There are more exotic kinds too, used for machine-level operations, which we will ignore for the moment. (See Advanced operators, if you want to know more.)

Here is a short program that demonstrates these special assignment operators:

#include <stdio.h>

int main()
{
  int my_int;

  printf ("Assignment Operators:\n\n");

  my_int = 10;                           /* Assignment */
  printf ("my_int = 10 : %d\n",my_int);

  my_int++;                              /* my_int = my_int + 1 */
  printf ("my_int++    : %d\n",my_int);

  my_int += 5;                           /* my_int = my_int + 5 */
  printf ("my_int += 5 : %d\n",my_int);

  my_int--;                              /* my_int = my_int = 1 */
  printf ("my_int--    : %d\n",my_int);

  my_int -= 2;                           /* my_int = my_int - 2 */
  printf ("my_int -= 2 : %d\n",my_int);

  my_int *= 5;                           /* my_int = my_int * 5 */
  printf ("my_int *= 5 : %d\n",my_int);

  my_int /= 2;                           /* my_int = my_int / 2 */
  printf ("my_int /= 2 : %d\n",my_int);

  my_int %= 3;                           /* my_int = my_int % 3 */
  printf ("my_int %%= 3 : %d\n",my_int);

  return 0;
}

The program above produces the output below:

Assignment Operators:

my_int = 10 : 10
my_int++    : 11
my_int += 5 : 16
my_int--    : 15
my_int -= 2 : 13
my_int *= 5 : 65
my_int /= 2 : 32
my_int %= 3 : 2

The second to last line of output is

my_int /= 2 : 32

In this example, 65 divided by 2 using the /= operator results in 32, not 32.5. This is because both operands, 65 and 2, are integers, type int, and when /= operates on two integers, it produces an integer result. This example only uses integer values, since that is how the numbers are declared. To get the fractional answer, you would have had to declare the three numbers involved as floats.

The last line of output is

my_int %= 3 : 2

This is because 32 divided by 3 is 10 with a remainder of 2.

 
 
  Published under free license. Design by Interspire