是否有人知道,例如,我是否使用c++编写以下代码:

int a;
void *ptr = &a;
ptr = (char *)ptr + 1; //<-- this is the interesting line;
(char *)是否仅告诉编译器如何解决此变量?
还是实际上在运行时添加了更多计算?

谢谢。

最佳答案

在这种情况下,无需执行任何额外的计算。

但是,在某些情况下,从技术上讲,强制类型转换是一种转换,主要是使用数字输入。例如,以下代码可能会引入运行时代码(前提是未对其进行优化,在这样的小示例中,您可能希望这样做):

int x = 42;
double d = (double)x;

这里的int和double的内部表示意味着您不能只更改编译器如何看待变量,还必须更改数据。

07-24 09:45
查看更多