如果需要组合布尔表达式,我们通常使用逻辑运算符.如果不使用逻辑运算符,我想知道表达式.
int x=101;
if(90<=x<=100)
cout<<'A';
Run Code Online (Sandbox Code Playgroud)
此代码仍在控制台上打印"A".你能帮我理解一下这个布尔表达式的评估方式和顺序.
c++ boolean-expression logical-operators relational-operators
我遇到了一段代码,其中<=在 C 中的代数表达式中使用了 。
int x=2, y=4, z=5, m=10;
m+= x * y + z++ <=m+3;
printf("%d, %d", m,z);
Run Code Online (Sandbox Code Playgroud)
我从未见过以这种方式使用关系运算符,并且想知道如何计算其输出。运行时收到的输出是 11, 6。<=这里以什么方式工作?
既然true falseC 中没有布尔类型,那么表达式的x == y计算结果是什么,什么时候为真,什么时候为假?
如果它的计算结果分别为 1 和 0,它们是整数,为什么我们不能case在switch语句中使用s这样的表达式?
这背后的正确原因是:
x==y,那么多个 case很有可能最终具有相同的值,即,无论何时,我们都会得到 1,因此多个这样的 case 将评估为 1 或 0;这在 switch 语句中是不允许的。#include <stdio.h>
int main(){
printf("%d,%d\n", 2 & (1<<1) , 2 & (1<<1)>0 );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序的输出是2,0.
2 & (1<<1)等于 2,大于 0。那么为什么2 & (1<<1) > 0计算结果为零?
c bit-shift operator-precedence bitwise-and relational-operators
我有一个关于关系运算符的问题,它们总是给出正确的结果吗?因为如果我们运行这行代码,结果将是 1 而不是 0
cout<<(ULLONG_MAX==-1);
Run Code Online (Sandbox Code Playgroud)
如果我们继续两边都减 1,结果仍然是 1
所以这可能会在我们的程序中产生错误的结果
解决办法是什么?
#include<stdio.h>
int main()
{
int n=2500;
if(0<n<1000){
printf("no\n");
}
else{
printf("yes\n");
}
int x=2500;
if(n>0 && n<1000){
printf("no\n");
}
else{
printf("yes\n");
}
}
Run Code Online (Sandbox Code Playgroud)
n 的 if-else 应该打印“是”
但输出是“否”
为什么0<n<1000不起作用
我想知道这段C语言代码中的i是如何计算的?
int x = 10, y = 20, z = 5, i;
i = x < y < z;
printf("%d\n",i);
Run Code Online (Sandbox Code Playgroud)