我对逻辑AND运算符感到困惑。
我有这两行代码。这里num
和j
都是int。我有一种情况,两个条件都满足,但我不知道为什么它不打印j
的值。任何人都可以指出错误吗?提前谢谢。
if(k==1 && num%j==0)
printf("%d",j);
答案 0 :(得分:6)
用简单的英语,当且仅当k == 1 && num % j == 0
等于1 时,k
的余数才是真的num
} j
是0.我可以说更多。
答案 1 :(得分:1)
这里有两种可能性。要么你永远不会到达printf
,要么输出永远不会找到你。
对于第一种情况,您确定k == 1
和num % j == 0
?在测试中为我们提供实际的数值可能会有所帮助。请注意,如果k
是一个浮点数,它是计算的结果,它可能会略微偏离1.0,并且条件将返回false。
对于第二种情况,你是如何测试的?这应该打印出j
的值,但它不会刷新输出,所以如果程序异常终止或者程序结束时控制台消失或者你可能看不到它。请尝试printf("%d\n", j);
甚至fflush(stdout);
以确保输出在控制台或终端上可见。
答案 2 :(得分:0)
如果条件为真,则代码中没有问题。
检查输出here。
答案 3 :(得分:0)
您可能还想添加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));
}
答案 4 :(得分:0)
您的代码运行正常,请查看此testcase:
所以问题不在于这两行。尝试在进入这些行之前打印所涉及的三个值,您可能会对您看到(或看不到)的内容感到惊讶。
答案 5 :(得分:0)
你也应该养成使用括号的习惯,imo:
if(k == 1 && (num % j == 0))
至少。