我想知道这段代码的真正含义。我的意思是,我想知道它的作用、顺序以及 ?
和 :
符号的含义;一切都已解释。
printf(" %c", ((sq & 8) && (sq += 7)) ? '\n' : pieces[board[sq] & 15]);
谢谢。
最佳答案
- 第一个参数“%c”表示 printf 需要打印出一个字符。
- 第二个参数是函数打印的字符。
在本例中,第二个参数是 ternary operator 。您可以阅读提供的链接,但简而言之,它基本上是 if-else block 的简写。这就是您的示例中的样子:
((sq & 8) && (sq += 7)) ? '\n' : pieces[board[sq] & 15]
让我们将其分为三个部分:
((sq & 8) && (sq += 7))
'\n'
件数[板[sq] & 15]
第一部分是条件(if);
- 此表达式
(sq & 8)
使用所谓的按位 AND 运算(了解更多 here )。基本上,二进制中的 8 是 1000,该部分检查 sq 在该位置是否有 1(可以是 1000、11000、101000 等);如果是,则该表达式等于 8(任何大于零的数字都表示 true),如果不是,则等于 0(表示 false)。 - && 表示 AND,只是表示左右表达式都必须为 true
sq += 7
会将 7 添加到 sq,如果不为 0,则为 true。
如果条件为真,则返回第二部分\n
(在您的情况下打印出来);否则第三部分将被打印出来(pieces[board[sq] & 15]
)。
关于有人能帮我解释一下这行代码的含义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59022474/