> 这是变量在if语句前
#include<stdio.h>
int main(){int h1, h2,hour1,hour2,men1,men2,a,b;
scanf_s("%d %d", &h1, &h2);
hour1 = h1 / 100;
hour2 = h2 / 100;
men1 = h1 % 100;
men2 = h2 % 100;
a = hour2 - hour1;
b = men2 - men1;
if(men2<men1) {
men2 = men2 + 60;
hour2--;
}
printf("%02d:%02d\n", a, b);}
> 这是变量在if语句后
#include<stdio.h>
int main(){int h1, h2, hour1, hour2, men1, men2, a, b;
scanf_s("%d %d", &h1, &h2);
hour1 = h1 / 100;
men1 = h1 % 100;
hour2 = h2 / 100;
men2 = h2 % 100;
if (men2 < men1)
{
men2 = men2 + 60;
hour2--;
}
a = hour2 - hour1;
b = men2 - men1;
printf("%02d:%02d\n", a, b);}
if语句影响hour2和men2的值,hour2和men1影响a和b的值,所以,a和b的赋值语句在if前后肯定是不一样的。
a和b在if语句下面是对的。
举个例子就看出来了,假设h1=233,h2=322;
那么:
hour1 = 2; hour2=3;
men1 = 33; men2=22;
men2<men1
所以,men2 = men2+60=88;hour2--(hour2=2)
a=hour2-hour1=2-2=0;
b=men2-men1=88-33=55
所以两个时间的差就是55
下面代码的逻辑是正确的