我试图找出这个陈述的含义以及变量larg
包含的内容:
int larg;
larg = ((larg % 8 != 0) ? (int) (Math.floor(larg / 8.0) + 1) * 8 : larg);
答案 0 :(得分:1)
部分
(larg % 8 != 0)
询问是否在没有剩余8分的情况下没有分数。如果是这样的话
(int) (Math.floor(larg / 8.0) + 1) * 8
执行将larg除以8,向下舍入以丢弃余数并加1,然后再乘以8.这意味着找到大于larg
的下一个8的乘数。
这是一个三元运算符...? ... : ...
,它是一个if语句。所以
larg =((larg % 8 != 0) ? (int) (Math.floor(larg / 8.0) + 1) * 8 : larg);
表示:“如果larg不是8的倍数,则向上舍入到8的下一个倍数,否则将其设置为自身”。放置它的另一种方法(由整数除以整数)
if (larg % 8 != 0) {
larg = ((larg / 8) + 1) * 8;
}
这段代码很可能是由一位经验丰富的程序员编写的,他更喜欢单行代码而不是三行if
语句。一个更有经验的程序员会知道可读性比将它保持在一行更重要,所以像你这样的未来读者会理解它而不必在这里问。