我在一个餐饮业哲学家的问题中看到了下面的表达,但我不明白。这种编码方式叫什么(假设它有一个特殊的名称)?这句话是怎么说的?请帮我解释一下。
int right = i;
int left = (i - 1 == -1) ? NO_OF_PHILOSOPHERS - 1 : (i - 1);
int locked;``以下是该项目的链接:
发布于 2021-03-19 06:07:41
这一行相当于以下内容:
int left;
if (i - 1 == -1) {
left = NO_OF_PHILOSOPHERS - 1;
} else {
left = i - 1;
}它简化为:
int left = i - 1;
if (left == -1) {
left = NO_OF_PHILOSOPHERS - 1;
}它也可以用模运算符来表示:
int left = (i - 1 + NO_OF_PHILOSOPHERS) % NO_OF_PHILOSOPHERS;带有问号的语法称为三值运算符语法。选择哪种方式来表达代码是一个优先考虑的问题。我不会在这里使用三元运算符,因为我认为这会使代码变得过于复杂,因为在同一行中增加了很多逻辑。
https://codereview.stackexchange.com/questions/257375
复制相似问题