`的用法? :` 在 Arduino 的二维码生成器中

Usage of `? :` in Arduino's QR code generator

我正在尝试使用 Arduino 创建二维码生成器。但是有一行我无法理解。任何人都可以帮助 me.My 代码在下面。

#include "qrcode.h"

void setup() {
Serial.begin(115200);

// Start time
uint32_t dt = millis();
const char* number = "NUMBER";
// Create the QR code
QRCode qrcode;
uint8_t qrcodeData[qrcode_getBufferSize(3)];
qrcode_initText(&qrcode, qrcodeData, 3, 3, number);

// Delta time
dt = millis() - dt;
Serial.print("QR Code Generation Time: ");
Serial.print(dt);
Serial.print("\n");

// Top quiet zone
Serial.print("\n\n\n\n");

for (uint8_t y = 0; y < qrcode.size; y++) {

    // Left quiet zone
    Serial.print("        ");

    // Each horizontal module
    for (uint8_t x = 0; x < qrcode.size; x++) {

        // Print each module (UTF-8 \u2588 is a solid block)
        Serial.print(qrcode_getModule(&qrcode, x, y) ? "\u2588\u2588": "  ");

    }

    Serial.print("\n");
}

// Bottom quiet zone
Serial.print("\n\n\n\n");
   }

    void loop() {

   }

我无法理解Serial.print(qrcode_getModule(&qrcode, x, y) ? "\u2588\u2588": " ");这一行。这部分是什么意思。 "\u2588\u2588": " "。我知道 \u2588 是 unicode 中的块符号。但是块符号后面的两个双逗号有什么用???

我假设你不理解ternary operator ?:

结构qrcode_getModule(&qrcode, x, y) ? "\u2588\u2588": " "表示:

  • if qrcode_getModule(&qrcode, x, y) 可以评估为布尔值“true”(此处为非空字节)然后使用冒号前的部分:"\u2588\u2588" (██)(普通块)
  • else (qrcode_getModule(&qrcode, x, y) == 0) 然后使用冒号后的部分:" "(空块)