Casts do not change any data. They merely cause the compiler to STFU and stop whining and complaining, or perhaps to whine and complain more. That is to say that the result of: (char*)sqlite3_column_text16(...) is exactly and precisely the same as (wchar_t*)sqlite3_column_text16(...) It is just the "whining attribute" that has been changed. Note for pendants: Yes, it is possible to change data via a cast however changing the "whine attributes" of a pointer does not change the data pointed to by the pointer or the pointer itself, the "whine attributes" of the pointer are all that are changed. It is not possible to translate THE DATA from english to swahili using the following construct: ``` english *t = "English text"; (swahili*)t; ``` The "whine attribute" of the pointer is merely changed from english to swahili but the pointer itself and the data pointed at, is unchanged.