左值作为赋值的左操作数.....?

时间:2018-05-09 16:42:16

标签: c

我正在做我的家庭作业..... :(使用三项式算子(?)_oo?oo:oo

#include <stdio.h>

int main()
{
    int time1, time2, gap;
    int hour, minute;

    setvbuf(stdout, NULL, _IONBF, 0);
    setvbuf(stdout, NULL, _IONBF, 0);

    printf("Enter first time: \n");
    scanf("%d", &time1);

    printf("Enter second time: \n");
    scanf("%d", &time2);

    gap = time2 - time1;

    gap > 0 ? hour = gap/100 : hour = (2400 - gap)/100;
    gap > 0 ? minute = gap%100 : minute = (2400 - gap)%100;

    print("The gap of these times: %d hours, %d minutes", hour, minute);

}

gap&gt; 0? gap / 100 =小时:(2400 - 缺口)/ 100 =小时;

gap&gt; 0?分钟=差距%100:分钟=(2400 - 差距)%100;

这两个句子是错误的(左值作为赋值的左值)

我想要的结果

第一次输入: 1925年

第二次输入: 2358

这些时间的差距:4小时33分钟

第一次输入: 1540

第二次输入: 1630

这些时间的差距:0小时50分钟

第一次输入: 0730

第二次输入: 0720

这些时间的差距:23小时50分钟

2 个答案:

答案 0 :(得分:4)

尝试改为:

 hour   = (gap > 0) ? gap/100 : (2400 - gap)/100;
 minute = (gap > 0) ? gap%100 : (2400 - gap)%100;

答案 1 :(得分:1)

由于两个条件表达式都评估相同的条件,因此在if语句中组合赋值会更清晰:

if (gap > 0) {
    hour = gap/100;
    minute = gap%100;
} else {
    hour = (2400 - gap)/100;
    minute = (2400 - gap)%100;
}

您可以通过添加新变量来进一步简化此操作:

int numerator = gap > 0 ? gap : 2400-gap;
hour = numerator/100;
minute = numerator%100;