如何在 Arduino 中使用“U”和“L”格式化程序?
在浏览 Arduino 代码时,您可能会遇到一些后跟U或L或两者(或小写字母u和l)的数字。这些是formatters,它们强制整数常量具有特定格式。U强制整数常量为无符号数据格式,而L强制整数常量为长数据格式。
这些格式化程序可以在定义变量时使用,也可以在公式中直接使用一些整数值。
示例
int a = 33u;# define b 33ul
int c = a*1000L;
以上所有行都可以正常编译。当然,如果要将数据类型限制为 unsigned int(如第一个示例中的int a = 33u),人们可能想知道使用整数数据类型有什么意义。没有任何意义。它们只是传达意图(您希望 Arduino 和读者将它们视为 unsigned int 或 long)。变量的类型仍然是 int。
示例
int a = 33u;void setup() {
// 把你的设置代码放在这里,运行一次:
Serial.begin(9600);
Serial.println("Hello");
a = a-45;
Serial.println(a);
}
void loop() {
// 把你的主要代码放在这里,重复运行:
}
串行监视器将打印 - 12(意味着 a 仍然是int类型; unsigned int不能取负值)。
在上面的例子之后,您可能想知道是否有任何指定U和L格式器的意义。好吧,以下示例将为您提供一个用例。
示例
void setup() {// 把你的设置代码放在这里,运行一次:
Serial.begin(9600);
Serial.println("Hello");
int x = -3;
if(x < 5){
Serial.println("Statement 1 is true");
}
if(x < 5U){
Serial.println("Statement 2 is true");
}
}
void loop() {
// 把你的主要代码放在这里,重复运行:
}
串行监视器仅打印“ Statement 1 is true ”。这是因为在第二种情况 (x < 5U) 中,通过使用 U 格式化程序,我们将算术转换为无符号算术。和 -3 的无符号等效值将大于 5。但是,如果您按如下方式重写上面的代码 -
void setup() {// 把你的设置代码放在这里,运行一次:
Serial.begin(9600);
Serial.println("Hello");
int x = -3;
int a = 5;
int b = 5U;
if(x < a){
Serial.println("Statement 1 is true");
}
if(x < b){
Serial.println("Statement 2 is true");
}
}
void loop() {
// 把你的主要代码放在这里,重复运行:
}
然后,打印这两个语句。这表明type取代了formatter。
以上是 如何在 Arduino 中使用“U”和“L”格式化程序? 的全部内容, 来源链接: utcz.com/z/322748.html