c - 有人可以解释一下这行代码是什么意思吗?
问题描述
我想知道这段代码的真正含义。我的意思是,我想知道它的作用、顺序?
以及:
符号的含义;都解释了。
printf(" %c", ((sq & 8) && (sq += 7)) ? '\n' : pieces[board[sq] & 15]);
谢谢。
解决方案
- 第一个参数“%c”表示 printf 需要打印一个字符。
- 第二个参数是函数打印的字符。
在这种情况下,第二个参数是三元运算符。您可以阅读提供的链接,但简而言之,它基本上是 if-else 块的简写。这就是您的示例中的样子:
((sq & 8) && (sq += 7)) ? '\n' : pieces[board[sq] & 15]
让我们把它分成三个部分:
((sq & 8) && (sq += 7))
'\n'
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]
)。
推荐阅读
- sql-server - 使用xml将不同行的数据连接到一列时如何删除空格?
- algorithm - 将大整数转换为不带模基的字符串的算法
- wildcard - 通配符搜索不适用于路径索引
- sql-server - Reading data from CSV File and Inserting it into Database
- python - PonyORM pytest error: RuntimeError: Request object lost db_session
- mysql - MySQL 三表连接与 sum
- reactjs - React Instant Search recover right data in function
- bash - 使用变量作为数组的名称并在 bash 中获取其元素之一
- java - Loop through n number of maps
- r - Error in file(out, "wt") : cannot open the connection while writing xlsx