c语言变量在if语句前后输出数值的区别

> 这是变量在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
下面代码的逻辑是正确的

img


这不修改了吗
if在前面如果条件为真则比if在后面的a,b发生变化。a会少1,b会多60.

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632