programing

C에서 "==" 연산자의 반환 값

easyjava 2023. 9. 11. 22:25
반응형

C에서 "==" 연산자의 반환 값

C에서 두 값이 동일하거나 다른 "참" 값으로 평가할 수 있는 경우 "==" 연산자가 항상 1로 평가한다고 가정해도 됩니까?

struct ss {
    int id;
};

struct os {
    int sid;
    int state;
};

int count(struct ss *s, int state)
{
    int num = 0;
    // foreach o (of type os*) in a hash table
        num += o->state == state && (s ? o->sid == s->id : 1);

    return num;
}

그렇게o->sid == s->id항상 1 또는 0을 반환할 것인가 아니면 다른 값을 반환할 수 있습니까?

C에서 두 값이 동일하거나 다른 "참" 값으로 평가할 수 있는 경우 "==" 연산자가 항상 1로 평가한다고 가정해도 됩니까?

네, 저도 그렇습니다.!= > < >= <=모든 관계 연산자들 말입니다.

C11(ISO/IEC 9899:201x) § 6.5.8 관계 연산자

각 연산자 <(미만), > (미만), <= (미만), >= (미만), > (미만)의 연산자는 지정된 관계가 참이면 1을 산출하고 거짓이면 0을 산출합니다.107) 결과는 int형입니다.

기준에 따라:

6.5.8 관계 연산자

각 연산자 <(미만), > (미만), <= (미만), >= (미만), > ( (미만)은 지정된 관계가 참이면 1을 산출하고 거짓이면 0을 산출합니다.결과에 형식 int가 있습니다.

6.5.9 균등화 작업자

==(와 비교) 및 !=(동일하지 않음) 연산자는 우선 순위가 낮은 것을 제외하고는 관계형 연산자와 유사합니다.각 연산자는 지정된 관계가 참이면 1을 산출하고 거짓이면 0을 산출합니다.결과에 형식 int가 있습니다.임의의 피연산자 쌍에 대해 정확하게 하나의 관계가 참입니다.

논리 피연산자의 경우(&&,||) :

6.5.13 논리 AND 연산자(또는 6.5.14 논리 OR 연산자)

&&(또는 ||) 연산자는 두 피연산자가 모두 0과 비교하면 1을 산출하고, 그렇지 않으면 0을 산출합니다.결과에 형식 int가 있습니다.

최종안은 여기 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf 에서 확인하실 수 있습니다.

결론:

  • 모든 균등 및 관계 연산자 (==,!=,<,>,<=,>=) 반품0위해서false그리고.1위해서true.

  • 논리 연산자 (==,||,!)을 대접합니다0~하듯이false기타 값은 다음과 같습니다.true그들의 피연산자들을 위해서 말입니다.그들은 또한 돌아옵니다.0~하듯이false그리고.1~하듯이true.

비교(평등 및 관계형) 연산자 (==,!=,<,>,<=,>=) 모든 값이 false일 경우 0을 반환하고 true일 경우 1을 반환하며, 다른 값은 반환하지 않습니다.

논리 연산자들은&&,||그리고.!피연산자에 대해 덜 까다롭기 때문에 0을 거짓으로 취급하고 0이 아닌 값은 참으로 취급합니다.그러나 false의 경우 0만 반환하고 true의 경우 1만 반환합니다.

C에서 두 값이 동일하거나 다른 "참" 값으로 평가할 수 있는 경우 "==" 연산자가 항상 1로 평가한다고 가정해도 됩니까?

예, 표준 호환 컴파일러의 경우 이 가정은 정확합니다.

프로그래밍 언어 — C, § 6.5.9 등호 연산자 (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf) :

각 연산자는 지정된 관계가 참이면 1을 산출하고 거짓이면 0을 산출합니다.결과에 형식 int가 있습니다.

언급URL : https://stackoverflow.com/questions/18097922/return-value-of-operator-in-c

반응형