我想减去两个时间间隔。这里一个时间间隔是5小时30分钟,其他时间是当前时间。代码写成如下。
main()
{
int Time1;
int Time2;
int hour=10;
int minute=5;
int second=13;
int h; int m;
int Ntime;
Time1=(60*5)+(30);
Time2=60*hour+minute;
Ntime=Time2-Time1;
m=(Ntime%60);
Ntime=Ntime/60;
h=(int)(Ntime);
printf("hour after subtraction is : %d hour %d min",h,m)
}
答案 0 :(得分:1)
我没有查看程序中的任何逻辑错误,但是您发布的错误是由于mod运算符即%期望操作数为整数。因此,如果您以这种方式修改代码,它应该删除错误。
main()
{
int Time1;
int Time2;
int hour=10;
int minute=5;
int second=13;
int h; int m;
int Ntime; //double has been changed to int
double Ntime2;
Time1=(3600*5)+(60*30);
Time2=(3600*hour)+(60*minute)+second;
Ntime=Time2-Time1;
Ntime2=((double)((Ntime%60)/100) + (double)(Ntime/60));
h=(int)(Ntime2);
m=((Ntime2 - (double)h)*100);
printf("hour after subtraction is : %d hour %d min",h,m)
}
您的代码中涉及太多类型转换,您应该寻找一种更简单的方法来执行此操作。查看time.h头文件,您可能会发现一些有用的东西。
答案 1 :(得分:0)
%
运算符仅用于整数值。它不会使用double
变量。
将您的代码更改为:
Ntime = (((int)Ntime%60) / 100 + (Ntime / 60));
答案 2 :(得分:0)
将您的计算时间更改为
Ntime=((float)((int)Ntime%60)/100+(Ntime/60));
你需要输入cast to float / double否则/ 100会导致整数,所以小数部分会被截断。