gpt4 book ai didi

c++ - static_cast 如何将 int 转换为 char 而不是 reinterpret_cast?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:55 25 4
gpt4 key购买 nike

我不确定之前是否有人问过它,但我相信一定是。考虑问题开头的简单行:

int a ;
char b = reinterpret_cast<char> (a);

我明白了reinterpret_cast将类型 x 的位模式解释为类型 y,当然,由于大小不匹配,它不应该工作,事实上它不工作。

现在考虑另一个代码:

int a ;
char b = static_cast<char> (a);

这行得通! .现在我的问题是它是如何工作的?我的意思是编译器会砍掉这些位吗? .我确定sizeof(char) < sizeof(int) .如果是,reinterpret_cast也应该通过相同的技术工作吗?

最佳答案

intchar 有一个明确定义的转换;这就是 static_cast 所做的。实际上,您不需要类型转换;您可以在这里使用作业。另一方面,reinterpret_cast 表示假装一种类型的对象中的位代表另一种类型的对象;对于某些类型(或多或少)没问题,但没有明智的方法可以假装 int 中的位可以用作 char 中的位而不应用转换,而 reinterpret_cast 不会这样做。

关于c++ - static_cast 如何将 int 转换为 char 而不是 reinterpret_cast?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com