gpt4 book ai didi

c++ - 这个声明是什么意思? "ret += (sx+ey)%2 ? 3 : 1, sx++;"

转载 作者:行者123 更新时间:2023-11-28 01:16:28 25 4
gpt4 key购买 nike

我提到的声明是做什么的?

#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;

最佳答案

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

变量 = 条件 ? value_if_true : value_if_false.

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

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

++ 用于将 1 添加到给定变量,在您的情况下,它在将 1 添加到 ret 后立即执行(如果该行的条件为假)。

无论如何,如评论中所述,这段代码确实不可读,如果我们将它分成几条语句,也不会发生什么不好的事情。

if (sx % 2 != ex % 2) { 
if ((cx + ey)) % 2) {
ret += 3;
} else {
ret++;
}
sx++;
}

关于c++ - 这个声明是什么意思? "ret += (sx+ey)%2 ? 3 : 1, sx++;",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58570156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com