首页 > 解决方案 > 有人可以解释一下这行代码是什么意思吗?

问题描述

我想知道这段代码的真正含义。我的意思是,我想知道它的作用、顺序?以及:符号的含义;都解释了。

printf(" %c", ((sq & 8) && (sq += 7)) ? '\n' : pieces[board[sq] & 15]);

谢谢。

标签: c

解决方案


  • 第一个参数“%c”表示 printf 需要打印一个字符。
  • 第二个参数是函数打印的字符。
  • 在这种情况下,第二个参数是三元运算符。您可以阅读提供的链接,但简而言之,它基本上是 if-else 块的简写。这就是您的示例中的样子:

    ((sq & 8) && (sq += 7)) ? '\n' : pieces[board[sq] & 15]
    

让我们把它分成三个部分:

  1. ((sq & 8) && (sq += 7))

  2. '\n'

  3. pieces[board[sq] & 15]

第一部分是条件(if);

  • 此表达式(sq & 8)使用所谓的按位与运算(在此处阅读更多内容)。基本上,二进制中的 8 是 1000,该部分检查 sq 在该位置是否有 1(可以是 1000、11000、101000 等);如果是,则该表达式等于 8(任何大于零的数字都表示真),如果不是,则等于 0(这意味着假)。
  • && 表示AND,只是表示左右表达式都必须为真
  • sq += 7将在 sq 上加 7,如果不是 0,则为 true。

\n如果条件为真,则返回第二部分(在您的情况下打印出来);否则将打印出第三部分 ( pieces[board[sq] & 15])。


推荐阅读