【问题标题】:lvalue required as left operand of assignment.....?左值需要作为赋值的左操作数.....?
【发布时间】:2018-10-19 20:42:23
【问题描述】:

我正在做我的 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);

}

差距 > 0 ?间隙/100 = 小时:(2400 - 间隙)/100 = 小时;

差距 > 0 ?分钟 = 间隙%100 : 分钟 = (2400 - 间隙)%100;

这两句话是错误的(左操作数需要左值)

我想要的结果

第一次输入: 1925

第二次输入: 第2358章

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

第一次输入: 1540

第二次输入: 1630

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

第一次输入: 0730

第二次输入: 0720

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

【问题讨论】:

标签: c


【解决方案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;

【讨论】:

    【解决方案2】:

    试试吧:

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

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      相关资源
      最近更新 更多