首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这句话是什么意思?"ret += (sx+ey)%2 ?3: 1,sx++;“

这句话是什么意思?"ret += (sx+ey)%2 ?3: 1,sx++;“
EN

Stack Overflow用户
提问于 2019-10-26 19:00:48
回答 1查看 98关注 0票数 0

我前面提到的语句在做什么?

代码语言:javascript
复制
#include <bits/stdc++.h> 
using namespace std;

int64_t dist(int64_t sx, int64_t sy, int64_t ex, int64_t ey) {
    sx += ey - sy;
    int64_t ret = (ey - sy)*2;
    if (sx%2 != ex%2)   
        ret += (sx+ey)%2 ? 3 : 1, sx++; // i don't understand this line,Please explain it.
    ret += (ex - sx)*2;
    return ret;
EN

回答 1

Stack Overflow用户

发布于 2019-10-26 19:05:20

这是一个三元条件运算符,允许您在为变量赋值时避免多语句if-else构造。它的使用形式是

variable = condition ? value_if_true : value_if_false

+=运算符将值添加到某个变量,并且等于ret = (ret + (sx+ey)%2 ? 3 : 1, sx++);

%运算符用于计算两个数字的余数。

++用于将1添加到给定的变量中,在本例中,它在将1添加到ret之后立即执行(如果该行上的条件为false)。

无论如何,正如注释中所指出的,这段代码真的是不可读的,如果我们将它拆分为几个语句,不会发生什么不好的事情。

代码语言:javascript
复制
if (sx % 2 != ex % 2) { 
  if ((cx + ey)) % 2) {
    ret += 3;
  } else {
    ret++;
  }
  sx++;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58570156

复制
相关文章

相似问题

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