首页
学习
活动
专区
圈层
工具
发布

C码结构
EN

Code Review用户
提问于 2021-03-19 01:04:14
回答 1查看 51关注 0票数 1

我在一个餐饮业哲学家的问题中看到了下面的表达,但我不明白。这种编码方式叫什么(假设它有一个特殊的名称)?这句话是怎么说的?请帮我解释一下。

代码语言:javascript
复制
int right = i;
int left = (i - 1 == -1) ? NO_OF_PHILOSOPHERS - 1 : (i - 1);
    int locked;``

以下是该项目的链接:

带互斥的餐饮哲学家问题

EN

回答 1

Code Review用户

发布于 2021-03-19 06:07:41

这一行相当于以下内容:

代码语言:javascript
复制
int left;
if (i - 1 == -1) {
    left = NO_OF_PHILOSOPHERS - 1;
} else {
    left = i - 1;
}

它简化为:

代码语言:javascript
复制
int left = i - 1;
if (left == -1) {
    left = NO_OF_PHILOSOPHERS - 1;
}

它也可以用模运算符来表示:

代码语言:javascript
复制
int left = (i - 1 + NO_OF_PHILOSOPHERS) % NO_OF_PHILOSOPHERS;

带有问号的语法称为三值运算符语法。选择哪种方式来表达代码是一个优先考虑的问题。我不会在这里使用三元运算符,因为我认为这会使代码变得过于复杂,因为在同一行中增加了很多逻辑。

票数 0
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/257375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档