C 나는 종종 자신이 명령문의 (TRUE 또는 FALSE) 하나 개의 부분을 필요로 찾아이은 IF-ELSE 문 바로 가기
를 사용(integer == 5) ? (TRUE) : (FALSE);
IF-ELSE 속기 문에 대한 구문은 다음과
(integer == 5) ? (TRUE) : (0);
이 속기 표기법을 사용하여 문장의 ELSE 부분을 포함하지 않는 방법이 있는지 궁금한가요?
C 나는 종종 자신이 명령문의 (TRUE 또는 FALSE) 하나 개의 부분을 필요로 찾아이은 IF-ELSE 문 바로 가기
를 사용(integer == 5) ? (TRUE) : (FALSE);
IF-ELSE 속기 문에 대한 구문은 다음과
(integer == 5) ? (TRUE) : (0);
이 속기 표기법을 사용하여 문장의 ELSE 부분을 포함하지 않는 방법이 있는지 궁금한가요?
연산자 ?:
은 값을 반환해야합니다. "else"부분이 없으면 부울식이 거짓 일 때 무엇을 반환합니까? 일부 다른 언어에서 의미있는 기본값은 null 일 수 있지만 C가 아닐 수도 있습니다. "if"를 수행하고 값을 반환 할 필요가없는 경우 if
을 입력하는 것이 훨씬 쉽습니다.
고마워! 그게 내가 묻는 전부 야. 나는 당신이 신경 쓰는 것이 조건이 특정 방법을 평가할 때, 그렇지 않으면 아무것도하지 않는다면 두 부분을 구현하지 않는 방법이 있는지 궁금 해서요. 비록이 문장을 사용한 과제의 경우에는 의미가 있다고 생각합니다. 대/소문자가 틀린 경우 정의 된 지정이 없습니다. – sherrellbc
gcc는 gcc에 대해 특별한 경우를 허용하지만 비표준 확장입니다. 예 : 'retval = retval? : desc.error;'- see http://stackoverflow.com/questions/7814694/bizarre-use-of-conditional-operator-in-linux –
@PaulR 나는 어딘가에서 그것을 읽었던 것을 기억하지만 결코 그것을 들여다 보았다. 그렇게 유용하지 않은 것 같습니다. – Jeremy
질문은 당신이 사용할 수있는 경우에만 다음 부분이 필요하면 우리가 어떻게 든 모두 다음없이 다음 식을 작성하고 다른 부분
(integer == 5) ? (THENEXPR) : (ELSEEXPR);
할 수 있는지 여부입니다 & & :
(integer == 5) && (THENEXPR)
y 이것은 확실히 C에서 작동하고 GCC를 사용하여 컴파일
(integer == 5) || (ELSEEXPR)
후자의 경우 '다른 경우'에 대한 지정이 수행되지 않는다는 것이 분명해야합니다. 필자의 경우, 짧게 할 수 있는지 찾고 있었다. 'int number = 0; 정수 = 2; 숫자 = (정수 == 5)?(리셋) : (무엇이든 유지하십시오)'. 그러나 'number'는 0으로 유지됩니다. – CanO
할당의 오른쪽 값으로 포함 된 경우 할당이 수행되어야하므로 식의 '다른 경우'는 바로 가기 조건의 값을 계산하고 할당합니다. &&의 경우 0입니다. "단축형 IF-ELSE 문구"(OP 쿼리)로 값을 버리고 할당은 then 부분 및/또는 else 부분 중 하나 (둘 중 어느 것이 든)이어야합니다. 또는 n = (i == 5)를 사용할 수 있습니까? 0 : n,하지만 if (i == 5) n = 0; 멋지 며 짧습니다 (짧은 - 심지어 단일 char var 함께). –
: OU에만 다른 부품 사용을 ||해야합니다. – sherrellbc
'return' 문을 표현식 안에 넣을 수 없습니다. – duskwuff
좋아, 나는 그걸 예제로 쓰고 있었다. 구문이 정확합니다. 예제 구현에 결함이 있습니다. 그것은이 질문의 요점이 아닙니다. 어쨌든 고맙습니다. – sherrellbc