我对逻辑 AND 运算符有点困惑。我有这两行代码。这里num
和j
都是int。我有两种条件都满足的情况,但我不知道为什么它不打印j
. 任何人都可以指出错误吗?提前致谢。
if(k==1 && num%j==0)
printf("%d",j);
我对逻辑 AND 运算符有点困惑。我有这两行代码。这里num
和j
都是int。我有两种条件都满足的情况,但我不知道为什么它不打印j
. 任何人都可以指出错误吗?提前致谢。
if(k==1 && num%j==0)
printf("%d",j);
k == 1 && num % j == 0
用简单的英语来说,当且仅当k
等于 1并且除以的余数num
为0时,表达式才为真j
。我不能再说什么了。
这里有两种可能。要么你永远不会得到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))
至少。