if 조건의 쉼표 연산자
int a = 1, b = 0;
if(a, b)
printf("success\n");
else
printf("fail\n");
if(b, a)
printf("success\n");
else
printf("fail");
이것은 app 파일이고 Visual Studio 2010에서 출력한 것입니다.
fail
success
왜 이런 행동을 할까요?설명 좀 해주시겠습니까?
http://en.wikipedia.org/wiki/Comma_operator :
C 및 C++ 프로그래밍 언어에서 쉼표 연산자(토큰으로 표시됨)
,
)은 첫 번째 피연산자를 평가하고 결과를 폐기한 다음 두 번째 피연산자를 평가하고 이 값(및 유형)을 반환하는 이진 연산자입니다.
처음엔if
:
if (a, b)
a
먼저 평가하여 폐기하고,b
두 번째로 평가되어 0으로 반환됩니다.따라서 이 조건은 거짓입니다.
당신의 두번째에if
:
if (b, a)
b
먼저 평가하여 폐기하고,a
두 번째로 평가되어 1로 반환됩니다.그래서 이 조건은 사실입니다.
피연산자가 두 개 이상인 경우 마지막 식이 반환됩니다.
두 조건을 모두 만족시키려면 && 연산자를 사용해야 합니다.
if (a && b)
위키피디아에서 제공하는 다른 사용 사례는 다음과 같습니다.
쉼표는 (if, while, do while 또는 for의) 조건 내에서 사용할 수 있으며, 특히 함수를 호출하고 결과를 블록 범위 지정과 함께 사용할 수 있습니다.
만약 (y = f(x), y > x) { ... // x 및 y }을(를) 포함하는 문장
많은 C 프로그래머들이 for문의 이니셜라이저 부분에서 쉼표를 발견했지만 if문에서 사용된 쉼표를 본 사람은 많지 않습니다.위의 경우 if 문이 y>x 조건을 테스트하기 전에 y를 초기화할 수 있습니다.
더 나은 설명은 다음과 같은 코드 해석입니다.
if (a,b)
{
c();
}
의미: a동작을 수행할 때 b동작을 평가하고 b동작이 참이면 c동작을 수행합니다.
언급URL : https://stackoverflow.com/questions/16475032/comma-operator-in-if-condition
'programing' 카테고리의 다른 글
wp.media multiple: true 설정이 사용자 지정 플러그인에서 작동하지 않음 (0) | 2023.11.04 |
---|---|
jQuery의 removeAttr로 여러 특성 제거 (0) | 2023.11.04 |
워드프레스 도커 컨테이너로 리디렉션할 nginx 하위 경로 (0) | 2023.11.04 |
스위프트를 가능하게 하는 것UI의 DSL? (0) | 2023.11.04 |
"ui-sref"는 링크를 두 번 클릭해도 "ui-view"(컨트롤러가 다시 실행되지 않음)를 새로 고치지 않습니다. (0) | 2023.11.04 |