相关疑难解决方法(0)

在C/C++中进行数学运算时,我应该对哪些变量进行类型转换?

例如,当我划分两个整数并想要返回一个浮点数时,我迷信地写了这样的东西:

int a = 2, b = 3;
float c = (float)a / (float)b;
Run Code Online (Sandbox Code Playgroud)

如果我不投射ab浮动,它将进行整数除法并返回一个int.

类似地,如果我想将带符号的8位数与无符号8位数相乘,我会在乘法之前将它们转换为带符号的16位数,以免出现溢出:

u8 a = 255;
s8 b = -127;
s16 = (s16)a * (s16)b;
Run Code Online (Sandbox Code Playgroud)

在完全不进行转换或仅转换其中一个变量时,编译器在这些情况下的行为究竟如何?我是否真的需要显式地转换所有变量,或者只是左边的那个变量,还是右边的变量?

c c++ casting

18
推荐指数
4
解决办法
1万
查看次数

标签 统计

c ×1

c++ ×1

casting ×1