I have been pondering a multiple choice question on coercion. One of the 4 examples a,b,c or d is an example of coercion. I narrowed it down to A or B. But I am having a problem choosing between the two. Cane someone please explain why one is coercion and one isn't.

A) 

```
string s="tomat";
char c='o';
s=s+c;

```

I thought A could be correct because we have two different types, character and string, being added. Meaning that c is promoted to string, hence coercion.

B) 

```
double x=1.0;
double y=2.0;
int i=(int)(x+y);

```

I also thought B was the correct answer because the double (x+y) is being turned into a int to be placed in i. But I thought this could be wrong because its being done actively through use of (int) rather than passively such as "int i = x + y"

I'll list the other two options, even though I believe that neither one is the correct answer

C)

```
char A=0x20;
A = A << 1 | 0x01;
cout << A << endl;

```

D)

```
double x=1.0;
double y=x+1;
return 0;

```

I'm not just looking for an answer, but an explanation. I have read tons of things on coercion and A and B both look like the right answer. So why is one correct and the other not.