c++ - 类型转换的奇怪结果

标签 c++ pointers casting

在下面的程序中:

int main(){

    int i = 0x52554153;
    const char *s = reinterpret_cast<const char*>(&i);
    std::string *s1 = new std::string(s);
    std::cout<<"word is "<<*s1<<std::endl;
    return 0;
}

我正在将 4 字节 int 转换为 4 字节“const char”字符串。我使用的整数值只不过是字符串“RUAS”的一组 ascii 值。我期待在“cout”语句中得到相同的结果。但它打印出“SAUR”,这与我提供的完全相反。 请向我解释输出。

最佳答案

它叫做 little-endianness - 大多数处理器架构以最低有效字节在前存储整数值。顺便说一句,string 构造函数必须接收一个以 null 结尾的字符数组(因此,您的 int 旁边的字节恰好包含零,这纯属幸运)。

关于c++ - 类型转换的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6731657/

相关文章:

c++ - boost 时出现段错误( boost :filesystem:exists)

c - 从函数返回指针作为静态变量

java - 对象类型转换的性能

c++ - 以下代码的问题是什么?

c++ - 计算这个平方根时,什么被认为是 IEEE-754 正确的结果?

c++ - LLVM 中的 SIMD vector 内存加载

c - 指针解引用数组

c - 使用 free() 时获取核心转储

java - 在 Java 中,int cast 的工作时间有多长?

c - 至未签名并返回 : Casting Pointer vs Casting Dereference