What is the meaning of '==' in C?

前端 未结 5 886
暗喜
暗喜 2021-01-18 11:30

What is the meaning of == and how does it differ from =?

How do I know which one to use?

相关标签:
5条回答
  • 2021-01-18 11:37

    Now that you know the difference between '==' and '=", let me put you some words of caution. Although '==' is used as a standard test of equality between comparable variables and '=' used as an internally type-casted assignment, the following programming error is quiet common.

    In the below example and similar codes, '=' is know as "Always true" conditional operator.

    #include<stdio.h>
    int main()
    {
        int i = 10, j = 20;
        if ( i = j )
            printf("Equal\n");
        else
            printf("NOT Equal\n");
        return 0;
    }
    

    So, the word of caution is "Never use '=' in if statements, unless you have something evil in your mind."

    0 讨论(0)
  • 2021-01-18 11:45

    a == b is a test if a and b are equal.

    a = b is called an assignment, which means to set the variable a to having the same value as b.

    (You type | with Shift-\ in the US keyboard layout.)

    0 讨论(0)
  • 2021-01-18 11:47

    I might add that in Finnish and Swedish keyboards. Pipe symbol; |; of OR is AltGr (the right alt) and < key. IF you are using Mac on the other hand it is Alt-7 key.

    Gave me a lot of sweat when I first started typing on these keyboards.

    0 讨论(0)
  • 2021-01-18 11:49

    == tests equality = assigns a value

    neither are related to ||

    0 讨论(0)
  • 2021-01-18 11:53

    == is a test for equality. = is an assignment.

    Any good C book should cover this (fairly early on in the book I would imagine).

    For example:

    int i = 3;                       // sets i to 3.
    if (i == 3) printf("i is 3\n");  // prints it.
    

    Just watch out for the heinous:

    if (i = 4) { }
    

    which is valid C and frequently catches people out. This actually assigns 4 to the variable i and uses that as the truth value in the if statement. This leads a lot of people to use the uglier but safer:

    if (4 == i) {}
    

    which, if you accidentally use = instead of ==, is a compile-time error rather than something that will bite you on the backside while your program is running :-)

    The logical-or operator is two vertical bar characters, one after the other, not a single character. Here it is lined up with a logical-and, and a variable called b4:

    ||
    &&
    b4
    

    No magic there.

    0 讨论(0)
提交回复
热议问题