
一、啥是强制类型转换就是你告诉编译器“我知道这个变量本来是A类型但现在你把它当B类型用出了事我负责。”语法就一句话(新类型) 变量或表达式比如int a 10; float b (float)a; // 把整数10强行变成浮点数10.0二、什么时候要用场景1整数除法变小数int x 5, y 2; float z x / y; // 结果是2.0不是2.5因为两边都是int float z2 (float)x / y; // 强制把x变float结果2.5场景2指针乱指低级操作慎用int num 0x12345678; char *p (char *)num; // 把int指针当char指针用逐字节访问场景3把无符号当有符号或者反过来unsigned int u 0xFFFFFFFF; int s (int)u; // 变成 -1补码解释三、有什么风险重点精度丢失(int)3.14 变成 3小数没了。数据截断(char)300 变成 44只取低8位。指针乱转把 int* 强转成 float*解引用读出来的是垃圾值二进制解释不同。未定义行为比如越界、对齐问题编译器不报错运行时可能崩溃。四、一句话总结强制转换是你强行改变编译器看待二进制数据的方式编译器信你但后果自负。用好能解决很多问题用烂就是隐藏的炸弹。新手尽量少用尤其在指针上。如果你觉得有帮助欢迎点赞、收藏、评论让更多人看到