看到这个问题, 你可能对float 或者double 不熟悉。
你强制转换可以,你可以这样:
printf("%d", (int)n);
或者可以这样:
int temp = (int)n;
但是你不要将n 强制转换后,又赋值给float,float 的内存存储,跟int 是不一样的
因为%d只用于输出整数,但n是浮点数,会输出0
改为printf("%d",(int)n)就行了
%d只能输出整数类型的数,而不是整数,所以就算n是整数也没用,可以直接输出(int)n
#include<bits/stdc++.h>
using namespace std;
int main() {
float n;
scanf("%f",&n);
printf("%d",(int)n);
return 0;
}
强制转换并不存在问题,问题出在printf那句,因为n是单精度浮点数,输出格式符要用%f,就没毛病了。如果不想要小数点那就用%.0f格式符。