[英]Logical AND operator
我对逻辑AND运算符有点困惑。 我有这两行代码。 这里num
和j
都是int。 我遇到了两个条件都满足的情况,但是我不知道为什么它没有打印j
的值。 有人可以指出错误吗? 提前致谢。
if(k==1 && num%j==0)
printf("%d",j);
用简单的英语来说,当且仅当k
等于1 且将num
除以j
的余数为0时,表达式k == 1 && num % j == 0
才是正确的。
这里有两种可能性。 要么您永远不会进入printf
,要么输出永远不会到达您。
对于第一种情况,您确定k == 1
并且num % j == 0
吗? 在测试中提供实际的数值可能会有所帮助。 请注意,如果k
是计算结果的浮点数,则可能与1.0略有出入,条件将返回false。
对于第二种情况,您如何测试呢? 那应该打印出j
的值,但是不会刷新输出,因此,如果程序异常终止或控制台在程序末尾消失,或者您可能看不到它。 尝试printf("%d\\n", j);
甚至fflush(stdout);
确保输出在控制台或终端上可见。
如果条件为真,则代码中没有问题。
在此处检查输出。
您可能还想添加else语句。 我无法数出这种情况发生在我身上的次数。 至少在编码初期,这是一个好习惯。 做这个:
这将帮助您发现问题
if(k==1 && num%j==0)
printf("%d",j);
else {
printf("%d \n",k);
printf("%d \n",num);
printf("%d \n",j);
printf("%d \n",(num%j));
}
您还应该养成自由使用括号的习惯,imo:
if(k == 1 && (num % j == 0))
至少。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.