C++ 获取int而不是float

C++ 获取int而不是float,c++,casting,C++,Casting,我正在做这样的事情 int a = 3; int b = 4; float c = a/b ; //This returns 0 while its suppose to return 0.75 我想知道为什么上面的代码不起作用?我知道3是整数,4也是整数。然而,结果是一个被分配给float的float。然而,我在这里得到了一个0。有没有关于我可能做错了什么的建议 float c = a/b ; a和b是整数,因此是整数除法 从C++标准: 5.6乘法运算符[expr.mul] 对于整数操作

我正在做这样的事情

int a = 3;
int b = 4;
float c = a/b ; //This returns 0 while its suppose to return 0.75
我想知道为什么上面的代码不起作用?我知道3是整数,4也是整数。然而,结果是一个被分配给float的float。然而,我在这里得到了一个0。有没有关于我可能做错了什么的建议

float c = a/b ;
a
b
是整数,因此是整数除法

<>从C++标准:

5.6乘法运算符[expr.mul]

对于整数操作数,/运算符生成代数商,并丢弃任何分数部分

Instaed,试试这个:

float c = a / static_cast<float>(b);
float c=a/static\u cast(b);

(正如@TrevorHickey所建议的,
静态\u cast
比旧式
(float)
cast)更好。

您不能将两个整数分开,然后接收一个float。您要么必须强制转换为浮点型,要么将类型作为浮点型

float a = 3;
float b = 4;
float c = a/b; 


提示:整数除法的结果是整数。然后将除法的结果分配给浮点。也就是说a/b的结果是一个int.Cast,不管你想要什么,但你不会得到0.75

首先计算除法,因为它是两个整数操作数,所以计算结果是一个整数。。。然后只分配给一个浮动

这是由于减少了类型复杂度。要强制结果为特定类型(至少),至少需要一个操作数为该类型。(通过一个
静态\u cast<>

因此:

float c=a/static\u cast(b);

<代码> > p>如果您在C++中工作,则应该使用隐式CAST中的STATICE-CAST CAST方法。 这将确保类型可以在编译时安全地强制转换

float c = a/static_cast<float>(b);
float c=a/static\u cast(b);

提示:整数除法的结果是整数。然后将除法的结果分配给浮点。也就是说,
a/b
导致
int
。你想怎么投就怎么投,但你不会从中得到0.75。你能不能把它记下来,因为answerCompiler看不太远。你能告诉我为什么你把b转换成浮点吗?如果a或b都是浮点,结果就是浮点。另外,还可以看看静态转换,因为在c++@TrevorHickey中它是更好的练习。你是说静态转换吗?(首先,我把这个问题归类为C相关问题。这就是为什么老式:)@MistyD它基本上是一组从最复杂到最不复杂的问题
float c = a / static_cast<float>(b);
float c = a/static_cast<float>(b);