减去两个时间间隔

我想减去两个时间间隔。 这里一个时间间隔是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) } 

我没有查看程序中的任何逻辑错误,但是您发布的错误是由于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头文件,您可能会发现一些有用的东西。

%运算符仅用于整数值。 它不适用于double变量。 将您的代码更改为: Ntime = (((int)Ntime%60) / 100 + (Ntime / 60));

将您计算Ntime的声明更改为,

 Ntime=((float)((int)Ntime%60)/100+(Ntime/60)); 

你需要输入cast to float / double否则/ 100将导致整数,因此小数部分将被截断。