`的用法? :` 在 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
) 然后使用冒号后的部分:" "
(空块)
我正在尝试使用 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
) 然后使用冒号后的部分:" "
(空块)