繁体   English   中英

逻辑AND运算子

[英]Logical AND operator

我对逻辑AND运算符有点困惑。 我有这两行代码。 这里numj都是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));
} 

您的代码运行良好,请看以下测试用例:

http://ideone.com/1gz8R

因此,问题不在于这两行。 在进入这些行之前,尝试打印涉及的三个值,您可能会对所看到的(或看不到的)感到惊讶。

您还应该养成自由使用括号的习惯,imo:

if(k == 1 && (num % j == 0))

至少。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM