关于C语言逻辑与的断路特性问题


 if(i==k || k==j || j==i)
                    continue;

这个表达式的理想作用是如果其中任意两个数相同则执行continue,但是请问逻辑与如果判断到i==k则不用判断k==j是否为真,那么第一个逻辑与表达式则为真,则后面的逻辑与因为只需要一个操作数为真则为真,那么是不是只判断了i==k是否为真,与理想作用不符合?

与理想作用符合的。

个人认为和理想作用是符合的。

  • || 关键字在判断了第一个为真了之后,就不会往后执行了
  • 但是如果i和k不相同,即第一个判断项为假,则会继续往后判断

并不存在你所说的,只判断了i==k是否为真的情况!

使用如下代码作为测试

#include<stdio.h>


int main()
{
    int i,k,j;
    while(1)
    {
        printf("pls input [i j k]: ");
        scanf("%d %d %d",&i,&j,&k);
        if( i==k || k==j || j==i)
        {
            printf("good!\n");
        }
        else{
            printf("bad!\n");
        }
    }

    return 0;
}

img

可以看到,不管是那两个数相等,都能正确判断出结果。

注意,你写的这个判断语句,并不会判断3个数都相等的情况。3个数相等显然也是符合其中两个相等的条件的

如果对你有帮助,还请点个采纳,万分感谢!