which one of these is an example of coercion

Posted by user1890210 on Stack Overflow See other posts from Stack Overflow or by user1890210
Published on 2012-12-09T22:18:57Z Indexed on 2012/12/09 23:04 UTC
Read the original article Hit count: 197

Filed under:

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.

© Stack Overflow or respective owner

Related posts about coercion