下面这两句用下面注释的替换为什么会错,也就是为什么要先转换成 double?
#include <iostream>
#include <ctime>
#include <string>
using namespace std;
int main()
{
clock_t CT = clock();
char szTime[64];
// 下面这两句用下面注释的替换为什么会错,也就是为什么要先转换成 double?
double dTime = ( double )CT;
sprintf( szTime, "%f ", dTime );
//sprintf(szTime, "%l ",CT); // 为什么不行?
string csTime( szTime );
cout < <csTime.c_str() < <endl;
return 0;
}
[解决办法]
格式划字符串,只要类型对上就okay了
[解决办法]
去找本C语言的书吧。你这么问,效率也太低了。
[解决办法]
对于整数和浮点数,都存在不同精度或者不同取值范围的两种。
例如对于整数,有短整数,整数,长整数;现在长整数和整数都是32位,短整数是16位。即现在长整数和整数的范围是一样的,但是以前的某个系统可能是整数是16位的。
对于浮点数,存在着double和float两种,两者的取值范围和精度不同。
输出整数使用%d,输出长整数是%ld
输出float用%f,输出double使用%lf
既然浮点数是带小数的,那么输出时就带有小数,计算机不管3.0是不是可以不带小数就可以表示。要想使得浮点数输出时不带小数,就要使用格式字符串来控制,例如使用%4.0f。
[解决办法]
%l很多函数库是不支持的,用%ld