减去两个时间间隔

时间:2014-03-12 05:39:03

标签: c time arduino

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

}

3 个答案:

答案 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会导致整数,所以小数部分会被截断。

相关问题