# # Compound Assignment

Can you guess the value of variable `i`

here.

```
int i = 10;
```

1

10, right? Say, I add 5 to it.

```
int i = 10;
i = i + 5;
```

1

2

2

Now the value of `i`

is 15.

I add 25 to it?

```
int i = 10;
i = i + 5;
i = i + 25
```

1

2

3

2

3

What is the value of `i`

? It is 40.

Notice the line `i = i + 5`

? It means

- Take value of variable
`i`

- Add 5 to the value
- Assign the result to the variable
`i`

What is the value of `i`

in the following code?

```
int i = 10;
int j = i + 5;
i = i + 25
```

1

2

3

2

3

What is your guess? 40? Wrong. It is 35. In line 2, we assigned the result of `i + 5`

to the variable `j`

.

## # `+=`

operator

See this code,

```
int i = 10;
i = i + 5;
```

1

2

2

C# has operator `+=`

that is a shorter version of `i = i + 5`

.

```
int i = 10;
i += 5;
```

1

2

2

`i += 5`

means `i = i + 5`

, i.e

- Take value of variable
`i`

- Add 5 to the value
- Assign the result to the variable
`i`

## # Exercise 1

```
int i = 10; // What is the value of i
i += 20; // What is the value of i
int j = 30; // What is the value of j
j += i; // What is the value of i and j
j += 100; // What is the value of j
```

1

2

3

4

5

2

3

4

5

## # `-=`

operator

Just like `+=`

operator, `-=`

is a shorter version of `i = i - 5`

.

It means you can write following code,

```
int i = 10;
i = i - 5;
```

1

2

2

in this way,

```
int i = 10;
i -= 5;
```

1

2

2

## # Exercise 2

```
int i = 90; // What is the value of i
i -= 30; // What is the value of i
int j = 30; // What is the value of j
j -= i; // What is the value of i and j
j -= 100; // What is the value of j
```

1

2

3

4

5

2

3

4

5

## # `*=`

, `/=`

and `%=`

operators

`*=`

is the shorter version of `i = i * 5`

.

`/=`

is the shorter version of `i = i / 5`

.

`%=`

is the shorter version of `i = i % 5`

.

## # Exercise 3

```
int i = 0;
int j = 25;
int k = 200;
i += 4; // What is the value of i
i *= j; // What is the value of i and j
i /= 50; // What is the value of i
k %= i; // What is the value of i and k
j *= k; // What is the value of j and k
```

1

2

3

4

5

6

7

8

2

3

4

5

6

7

8