是否有人知道,例如,我是否使用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的内部表示意味着您不能只更改编译器如何看待变量,还必须更改数据。