void main() {
int i;
for(i=1;i<=100;i++)
{
if(i%5==0&&i%3!=0)//我只知道&&是一假必假,||是一真必真,但是实际中用的时候怎么判断用&&还是||还是!非呢
{
printf("%d\n",i);
}
}
}
&& 这是一个 辑操作符 用在程序里可以这样去理解
if ( i%5 ==0 && i%3!=0 )
如果 (i模 5 = 0 而且 i 模 3!= 0 )
能被5整除,不能被3整除要同时成立,必须用&&,两边都得成立
虽然根据优先级这样写是对的,但是如果你刚开始学,还不是太了解的话建议你加()
if((i%5==0)&&(i%3!=0))
i%5==0的意思是能被5整除;
i%3!=0的意思是不能被3整除
而只有&&两边都为真,结果才为真
我刚开始学习的时候也要慢慢想,那时我就加括号,这样便于理解,后来敲多了,也就能慢慢去掉括号了,仅仅是我个人学习方法,希望能对你有帮助
结合(== ,!=等其他符号)和实际需求,然后把所要表示的情况用&& ||,都表示清楚就行了啊。多练习下,多思考思考。习惯了,就懂了。
&&可以理解为 并且 的意思,||是 或者 的意思。if(i%5==0&&i%3!=0)意思是 “如果i能被5整除并且不能被3整除”
if(i%5==0&&i%3!=0)
%是求余运算符,i%5==0只有当i为5的倍数时才返回true。
能被5整除 并且 不能被3整除用逻辑与“&&”或 逻辑与'&'
在java中'&&'具有短路功能,即如果前者返回false,后者就不在进行计算,例如:(2>3)&&(5/0)分母除以0也是不会报错的。
逻辑与'&'当逻辑运算符两侧不是Boolean表达式时还有位操作的功能,表示当同时为1时才返回1,否则返回0,
例如: A = 60,且 B = 13,现在以二进制格式表示A = 0011 1100,B = 0000 1101
则A&B=0000 1100,十进制为12
&&、||、==、!=都是逻辑运算符,就像加减乘除一样~,使用它们的目的都是要得到一个结果,只不过,加减乘除得到一个算术结果,而前
者得到一个逻辑结果,也就是真或者假。
您知道的是它的运算结果法则,是没有问题的,但是不全面~您的疑惑是什么时候用什么。
如果我需要两个结果同时满足(即为真),我才能得到一个真,那么就用&&。这个运算符的运算规则是:在A&&B(这里的A和B是两个逻辑运算结果,也就是bool值,它可能是函数返回的结果,也可能是一个bool变量)中,
首先判断A是不是为真,
如果A真,那么判断B是否为真,B为真,那么运算结果为真,如果B为假,那么运算结果为假;
如果A假,那么运算结果直接为假,不再进行和B相关的检查操作。所以您的理解没错;
如果是(A||B),那么
首先判断A是不是真,
如果A真,那么运算结果直接为真,返回。不再运行检查B(比如执行一段代码啥的);
如果A假,那么检查B是否为真,如果B真,那么运算结果为真,如果B假,运算结果为假。所以您的理解也没错;
其实,您说的是规律,规律是总结出来的,而对于我们来说,记住规律是一方面,了解它背后的原因,有助于更好地记忆呢~
祝一切顺利
这个问题跟C语言没有太大关系,是个逻辑问题。
需要解决的是从汉语翻译成逻辑语言的问题。
这个问题是:1到100能被5整除,但不能被3整除。
包含3个要素:
1. 范围, 1到100
2. 条件1,能被5整除
3. 条件2,不能被3整除
这3个要素是都要满足的,也就是“与”的关系,这个没有道理再讲了。如果问题是1,2,3为什么是“与”的关系,那真是回答不了。
两个条件同时成立用&&,单独满足一个条件用||.