判断题 假设:bool bol; int a = 3, b = 4, c = 5; 执行语句:bol = a + b > c && a < 0;之后,bol的值是否为真?
时间: 2023-05-11 21:05:25 浏览: 126
答案是:假。因为表达式 a > b 的结果是 false,而 c 的值是 5,所以表达式 a > b > c 的结果是 false > c,而 false 转换为整数时是 0,所以最终结果是 0 > 5,即 false。
相关问题
有 int a=0, b=4, c=5; 则表达式 a||b+c&&b 的值为
a || b c 不是合法的表达式,因为在C语言中,表达式中的操作符必须被明确的括起来,例如 (a || b) c 或者 a || (b c)。
如果想要计算 a || b 的结果,那么 a 和 b 都必须是布尔值(bool)或者能够转化为布尔值的表达式。在C语言中,0 被视作 false,其他所有值都被视作 true。所以,对于上面的代码来说, a || b 的结果为 true。
如果想要计算 (a || b) c 的结果,那么 c 必须是整数(int)或者能够转化为整数的表达式。由于 a || b 的结果为 true,所以这个表达式的结果就是 c 的值,即 5。
最后,如果想要计算 a || (b c) 的结果,那么 b 和 c 都必须是整数(int)或者能够转化为整数的表达式。由于 b 和 c 都大于0,所以 b c 的结果为 true。那么 a || (b c) 的结果就是 true。
总之,a || b c 这个表达式是不合法的,需要括起来,才能得到正确的结果。
#include <stdio.h> #include <stdlib.h> int main() { int a=3,b=4,c=5; bool n=a||b+c&&b-c; printf(n); return 0; }
这段代码中存在一些问题。首先,bool类型应该使用"%d"来输出,而不是使用"%f"。其次,逻辑运算符优先级需要注意,应该先计算"b+c"和"b-c"的值,再进行或运算。最后,输出语句应该使用"%d"来输出n的值,而不是使用n本身。修改后的代码如下:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int a=3,b=4,c=5;
bool n = a || (b+c) && (b-c);
printf("%d", n);
return 0;
}
```
输出结果为1,表示n的值为真(true)。