#include <stdio.h>
int main()
{
int a = 100;
double b = static_cast<float>(a); // ok
double b1 = (float)a; // c-cast a->float == ok, implicit static_cast here
// unsigned char const * c = a; // illegal, need casting
//unsigned char const * c = static_cast<unsigned char const *>(a); // illegal cast, incompartible types
unsigned char const * c = reinterpret_cast<unsigned char const *>(a); // ok
unsigned char const * c1 = (unsigned char const *)(a); // c-cast 100->pointer == ok, implicit reinterpret_cast here
// unsigned char * d = c; // illegal, stripping const
unsigned char * d = const_cast<unsigned char *>(c); // ok
unsigned char * d1 = (unsigned char *)c; // c-cast const -> non-const == ok, implicit const_cast here
printf("%d, %f, %x, %x", a, b, c, d);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKaW50IG1haW4oKQp7CiAgICAgICAgaW50IGEgPSAxMDA7CgoJZG91YmxlIGIgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYSk7IC8vIG9rCiAgICAgICAgZG91YmxlIGIxID0gKGZsb2F0KWE7ICAgIC8vIGMtY2FzdCBhLT5mbG9hdCA9PSBvaywgaW1wbGljaXQgc3RhdGljX2Nhc3QgaGVyZQoKCS8vIHVuc2lnbmVkIGNoYXIgY29uc3QgKiBjID0gYTsgLy8gaWxsZWdhbCwgbmVlZCBjYXN0aW5nCiAgICAgICAgLy91bnNpZ25lZCBjaGFyIGNvbnN0ICogYyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgY29uc3QgKj4oYSk7IC8vIGlsbGVnYWwgY2FzdCwgaW5jb21wYXJ0aWJsZSB0eXBlcwoJdW5zaWduZWQgY2hhciBjb25zdCAqIGMgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIgY29uc3QgKj4oYSk7IC8vIG9rCgl1bnNpZ25lZCBjaGFyIGNvbnN0ICogYzEgPSAodW5zaWduZWQgY2hhciBjb25zdCAqKShhKTsgLy8gYy1jYXN0IDEwMC0+cG9pbnRlciA9PSBvaywgaW1wbGljaXQgcmVpbnRlcnByZXRfY2FzdCBoZXJlCgoJLy8gdW5zaWduZWQgY2hhciAqIGQgPSBjOyAvLyBpbGxlZ2FsLCBzdHJpcHBpbmcgY29uc3QKCXVuc2lnbmVkIGNoYXIgKiBkID0gY29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyICo+KGMpOyAvLyBvawogICAgICAgIHVuc2lnbmVkIGNoYXIgKiBkMSA9ICh1bnNpZ25lZCBjaGFyICopYzsgLy8gYy1jYXN0IGNvbnN0IC0+IG5vbi1jb25zdCA9PSBvaywgaW1wbGljaXQgY29uc3RfY2FzdCBoZXJlCgoKICAgICAgICBwcmludGYoIiVkLCAlZiwgJXgsICV4IiwgYSwgYiwgYywgZCk7CiAgICAgICAgcmV0dXJuIDA7Cn0=