一个关于float强制转换成int过程中的奇怪问题
各位大侠,我在将一个float数强制转换成int型时,无意中发现一种转换情况出现编译错误,实在不能理解其中奥秘,望大家不吝赐教。
操作系统:win2000或winXP
编译环境:VC6.0
程序代码如下:
float f=(float)257.33;
int n;
n=(int(f));
出现的编译错误如下(所有错误都指向最后一行代码:n=(int(f));):
E:\MyVC\uchar\ucharDlg.cpp(198) : error C2061: syntax error : identifier 'f'
E:\MyVC\uchar\ucharDlg.cpp(198) : error C2066: cast to function type is illegal
E:\MyVC\uchar\ucharDlg.cpp(198) : error C2059: syntax error : ';'
Error executing cl.exe.
ucharDlg.obj - 3 error(s), 0 warning(s)
但是,如果将代码稍作一点改动,就不会出错,以下几种情况都没有错误:
//right
float f=(float)257.33;
int n;
n=(int(f*1));
//right
float f=(float)257.33;
int n=(int(f));
//right
float f=(float)257.33;
int n;
n=((int)f);
以上问题实在想不明白,希望大侠们指点。