在变量错误中浮动

Float in var bug?

本文关键字:错误 变量      更新时间:2023-10-16

我用它来测量经过的时间:

const clock_t begin_time = clock();
// code here
cout << float( clock () - begin_time ) /  CLOCKS_PER_SEC;   //return 1.234
float var = ( clock () - begin_time ) /  CLOCKS_PER_SEC;
cout << var;                                                //return 1

请解释一下我不明白发生了什么。

编辑:为什么打印的 var 没有".234"?

第一个表达式:

float( clock() - begin_time) / CLOCKS_PER_SEC;

将子表达式clock() - begin_time转换为浮点值,这意味着整个表达式对应于浮点除法(其结果在您的示例中1.234f)。

在第二个表达式中:

( clock() - begin_time) / CLOCKS_PER_SEC;

所有参数都是整数类型,因此执行整数除法。其结果是一个整数值(在您的示例中1 )。直到稍后,结果才转换为浮点数(1.0f),以分配给浮点变量var

如果要将结果存储在变量float var可以使用:

float var = float( clock() - begin_time ) / CLOCKS_PER_SEC;
cout << var;