#include <iostream>
int main(){
// . The compiler applies implicit conversions
// when types are different in
// an expression
// . Conversions are always done from the smallest
// to the largest type in this case int is
// transformed to double before the expression
// is evaluated.Unless we are doing an assignment
double price { 45.6 };
int units {10};
auto total_price = units * price; // units will be implicitly converted to double
std::cout << "Total price : " << total_price << std::endl;
std::cout << "sizeof total_price : " << sizeof(total_price) << std::endl;
//Implicit conversions in assignments
// The assignment operation is going to cause an implicit
// narrowing conversion , y is converted to int before assignment
int x (45.44);
double y ;
y= x; // double to int
std::cout << "The value of x is : " << y << std::endl; // 45
std::cout << "sizeof x : " << sizeof(y) << std::endl;// 4
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKCmludCBtYWluKCl7CgoJLy8JCS4gVGhlIGNvbXBpbGVyIGFwcGxpZXMgaW1wbGljaXQgY29udmVyc2lvbnMKCS8vIAkJCXdoZW4gdHlwZXMgYXJlIGRpZmZlcmVudCBpbiAKCS8vCQkJYW4gZXhwcmVzc2lvbgoJLy8JCS4gQ29udmVyc2lvbnMgYXJlIGFsd2F5cyBkb25lIGZyb20gdGhlIHNtYWxsZXN0CgkvLwkJCXRvIHRoZSBsYXJnZXN0IHR5cGUgaW4gdGhpcyBjYXNlIGludCBpcyAKCS8vCQkJdHJhbnNmb3JtZWQgdG8gZG91YmxlIGJlZm9yZSB0aGUgZXhwcmVzc2lvbgoJLy8JCQlpcyBldmFsdWF0ZWQuVW5sZXNzIHdlIGFyZSBkb2luZyBhbiBhc3NpZ25tZW50CgkKCWRvdWJsZSBwcmljZSB7IDQ1LjYgfTsKICAgIGludCB1bml0cyB7MTB9OwogICAgCiAgICBhdXRvIHRvdGFsX3ByaWNlID0gdW5pdHMgKiBwcmljZTsgLy8gdW5pdHMgd2lsbCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBkb3VibGUKCQoJc3RkOjpjb3V0IDw8ICJUb3RhbCBwcmljZSA6ICIgPDwgdG90YWxfcHJpY2UgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8ICJzaXplb2YgdG90YWxfcHJpY2UgOiAiIDw8IHNpemVvZih0b3RhbF9wcmljZSkgPDwgc3RkOjplbmRsOwoKCgkvL0ltcGxpY2l0IGNvbnZlcnNpb25zIGluIGFzc2lnbm1lbnRzCgkvLyBUaGUgYXNzaWdubWVudCBvcGVyYXRpb24gaXMgZ29pbmcgdG8gY2F1c2UgYW4gaW1wbGljaXQKCS8vIG5hcnJvd2luZyBjb252ZXJzaW9uICwgeSBpcyBjb252ZXJ0ZWQgdG8gaW50IGJlZm9yZSBhc3NpZ25tZW50CglpbnQgeCAoNDUuNDQpOwogICAgZG91YmxlIHkgOwogICAgeT0geDsgLy8gZG91YmxlIHRvIGludAoJc3RkOjpjb3V0IDw8ICJUaGUgdmFsdWUgb2YgeCBpcyA6ICIgPDwgeSA8PCBzdGQ6OmVuZGw7IC8vIDQ1CglzdGQ6OmNvdXQgPDwgInNpemVvZiB4IDogIiA8PCBzaXplb2YoeSkgPDwgc3RkOjplbmRsOy8vIDQKCQogICAKICAgIHJldHVybiAwOwp9