source

!! c 연산자, 2개면 안되나요?

ittop 2023. 9. 24. 13:09
반응형

!! c 연산자, 2개면 안되나요?

는 이 코드를 읽고 이 줄을 가지고 있습니다.

 switch (!!up + !!left) {

뭐가!!연산자 ? 두개의 논리적이 아닌 ?

네, 두 개입니다.

!!a1한다면a0이 아닙니다.0한다면a0

생각할 수 있습니다.!!사실은, 에 대한 클램핑.{0,1}. 저는 개인적으로 그 사용법이 화려해 보이는 것은 좋지 않은 시도라고 생각합니다.

이렇게 상상할 수 있습니다.

!(!(a))

차근차근 하면 이게 말이 돼요.

result = !42;    //Result = 0
result = !(!42)  //Result = 1 because !0 = 1  

이것은 돌아올 것입니다.1임의의 숫자(-42, 4.2f 등)를 사용하지만, 사용하는 경우만 해당됩니다.0, 이렇게 될 것입니다.

result = !0;    //Result = 1
result = !(!0)  //result = 0

!!는 보다 휴대성이 뛰어난 (C99 이전) 의 대안입니다.(_Bool).

맞아요.두 개입니다.어떤 사람이 이런 일을 하는 이유를 알아보려면 다음 코드를 사용해 보십시오.

#include <stdio.h>

int foo(const int a)
{
    return !!a;
}

int main()
{
    const int b = foo(7);
    printf(
        "The boolean value is %d, "
        "where 1 means true and 0 means false.\n",
        b
    );
    return 0;
}

출력합니다.The boolean value is 1, where 1 means true and 0 means false.만약 당신이 떨어뜨리면.!!, 하지만, 그것은 출력합니다.The boolean value is 7, where 1 means true and 0 means false.

언급URL : https://stackoverflow.com/questions/10307281/c-operator-is-a-two-not

반응형