逻辑AND运算符
我对逻辑运算符很困惑。 我有这两行代码。 这里num
和j
都是int。 我有一种情况,两个条件都满足,但我不知道为什么它不打印j
的值。 任何人都可以指出错误吗? 提前致谢。
if(k==1 && num%j==0) printf("%d",j);
在简单的英语中,表达式k == 1 && num % j == 0
是真的,当且仅当k
等于1 而且除以j
除以j
的余数为0.我可以说更多。
这里有两种可能性。 要么你永远不会到达printf
,要么输出永远不会到达你。
对于第一种情况,你确定k == 1
和num % j == 0
? 在测试中给我们实际的数值值可能有所帮助。 请注意,如果k
是一个浮点数,它是计算的结果,它可能会略微偏离1.0,并且条件将返回false。
对于第二种情况,您如何测试? 这应该打印出j
的值,但它不会刷新输出,所以如果程序exception终止或者程序结束时控制台消失或你可能看不到它。 尝试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))
至少。