c语言中&& 和|| 运算


#include <stdio.h>
int main()
{
    int a,b,c;

    puts("请输入三个数。");

    scanf("%d%d%d,&a,&b,&c");

    if (a==b==c)
        printf("有3个数相等");
    else if(a==b || a==c || b==c)
        printf("有2个数相等");
    else
        printf("三数各不相等");

    return 0;
}

为何 输入数字后printf无法作用

不要写a==b==c,c语言不支持连等,除非你3个数不是0就是1

img


who 来解答

我当初也这么错了

scanf()写错了,引号括在格式说明符周围
正确的是:

scanf("%d%d%d", &a, &b, &c);

而且3数相等需要

if ((a == b) && (b == c))

连在一起会出错,因为

(a==b==c)

其实是

((a==b) == c)

程序会先判断(a==b),然后得到一个布尔值(0或1)和c比较:

(布尔值==c)

所以会出现错误结果

C语言不支持连等,应该改成这样

    if ((a==b)&&(b==c)&&(a==c))

为了避免优先级问题,最好给上括号

else if((a==b)||(a==c) || (b==c))