bool flag = A != 31 写成ARM汇编
时间: 2023-08-10 17:06:04 浏览: 50
假设A的值已经存储在寄存器R0中,可以使用以下ARM汇编代码来实现bool flag = A != 31的逻辑:
```
CMP R0, #31 ; 比较R0和31
MOVEQ R1, #0 ; 如果相等,将R1设置为0
MOVNE R1, #1 ; 如果不相等,将R1设置为1
```
在上面的代码中,首先使用CMP指令比较R0和31的值,然后根据Z标志位的值使用MOVEQ和MOVNE指令将R1设置为0或1,最终R1中的值就是bool flag的值。如果A的值等于31,则flag为false(0),否则flag为true(1)。
相关问题
bool flag = true; if(flag==true){} 这样写对吗
是的,你的代码片段 `bool flag = true; if(flag==true){}` 是合法的,并且逻辑上是正确的。它声明了一个布尔类型的变量 `flag` 并将其赋值为 `true`。然后,在 `if` 语句中,通过比较 `flag` 是否等于 `true` 来判断条件是否成立。
然而,在这种情况下,你可以直接使用 `flag` 作为条件,而不需要显式地与 `true` 进行比较。以下是代码的简化版本:
```cpp
bool flag = true;
if (flag) {
// 条件为真时执行的代码
}
```
这样写更加简洁,但逻辑上与你的代码是等价的。
bool posixly_correct = !!getenv ("POSIXLY_CORRECT");其中的!!是什么用法
在C语言中,双重逻辑非运算符 `!!` 的作用是将一个表达式的值强制转换为布尔类型(`true` 或 ``)。它的使用方式如下:
```c
bool posixly_correct = !!getenv("POSIXLY_CORRECT");
```
在这个例子中,`getenv("POSIXLY_CORRECT")` 是一个获取环境变量 `"POSIXLY_CORRECT"` 的函数调用。`getenv` 函数会返回一个指向字符串的指针,如果环境变量存在,则返回非空指针;否则,返回空指针。
将 `getenv("POSIXLY_CORRECT")` 的结果应用双重逻辑非运算符 `!!`,可以将其转换为布尔值。如果 `getenv("POSIXLY_CORRECT")` 返回非空指针,则第一个逻辑非操作将其转换为 `false`,再经过第二个逻辑非操作后得到 `true`;如果返回空指针,则两个逻辑非操作将其转换为 `false`。
因此,`posixly_correct` 变量将被赋予布尔值,表示环境变量 `"POSIXLY_CORRECT"` 是否存在。