c – reinterpret_cast何时修改位?

c – reinterpret_cast何时修改位?,第1张

概述从C标准: 5.2.10.3 The mapping performed by reinterpret_cast might, or might not, produce a representation different from the original value. 我在这个网站上接受过培训,相信并重复一遍. (即使可能只是琐事).从float *到int *的reinterpret_ca 从C标准:

5.2.10.3

The mapPing performed by reinterpret_cast might,or might not,produce
a representation different from the original value.

我在这个网站上接受过培训,相信并重复一遍. (即使可能只是琐事).从float *到int *的reinterpret_cast允许产生不同的位模式.唯一的保证是reinterpret_cast的结果返回到float *将产生原始位模式.

我的问题:这是否会发生?现有的真实世界的平台或cpu或编译器是否实际重新解释为不同的位模式?如果没有,那么reinterpret_cast是否存在任何运行时开销的真实情况呢?

根据我对reinterpret_cast的所有经验,演员是编译器的指令,而不是运行时间.

解决方法 我曾经在char *大于int *的平台上工作,即使在平台上也有不同的布局 大小是一样的.所讨论的机器都不是 然而,今天特别相关(尽管第二,PDP-10是其全盛时期更重要的机器之一). 也可以想象,一些英特尔的编译模式 本机模式(或以前称为纯模式)将会 在一个reinterpret_cast中甚至是一个“归一化”指针 隐式转换,以方便地址比较. 这也是可以想象的(虽然我没有看到它)这样 转换执行正确的对齐,例如一个转换 char * to int *可能会将2个低位位强制为0 不过,实际上,我今天认为,你不可能 看到reinterpret_cast在数据指针之间进行任何更改 类型.这个问题更具历史意义. (但我不知道 现代嵌入式处理器.从我所了解的,其中很多 是字寻址,所以如果sizeof(int)!= sizeof(char),他们是 可能需要一个特殊的格式来解决char.) 总结

以上是内存溢出为你收集整理的c – reinterpret_cast何时修改位?全部内容,希望文章能够帮你解决c – reinterpret_cast何时修改位?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存