@PSkocik의 대답은 괜찮지 만 2 센트를 더합니다. 내가 이것을 주석으로, 또는 대답으로해야하는지 확실하지 않다; 다른 사람들이 볼만한 가치가있는 IMHO 인 반면 후자는 종종 보이지 않기 때문에 후자를 선택한다.
가끔씩 만 사용할뿐 아니라
if(0) {
//deliberately left empty
} else if( cond1 ) {
//deliberately left empty
} else if( cond2 ) {
//deliberately left empty
...
} else {
// no conditions matched
}
그러나 나는 또한 때때로
if( 1
&& cond1
&& cond2
...
&& condN
) {
또는
if( 0
|| cond1
|| cond2
...
|| condN
) {
복잡한 조건. 같은 이유로 편집하기 쉽고 #ifdef 등
그 문제에 대해서는 Perl에서 할 것입니다
@array = (
elem1,
elem2,
...
elem1,
) {
- 목록 끝에 쉼표를 적어 둡니다. 쉼표가 C 및 C ++ 목록에서 구분 기호인지 구분 기호인지 잊어 버렸습니다. IMHO 이것은 우리가 배운 것 중 하나입니다. [ Perl의 후행 쉼표는 나쁜 습관입니까? 쉼표]는 좋은 것입니다. 새로운 표기법과 마찬가지로 익숙해지는 데 시간이 걸립니다.
if(0)
코드를 lisp와 비교합니다.
(cond (test1 action1)
(test2 action2)
...
(testn actionn))
당신이 짐작했듯이
(cond
(test1 action1)
(test2 action2)
...
(testn actionn)
)
나는 때때로 더 인간이 읽을 수있는 구문이 어떻게 생겼는지 상상하려고 노력했다.
혹시
IF
:: cond1 THEN code1
:: cond2 THEN code2
...
:: condN THEN codeN
FI
Dikstra의 [ https://en.wikipedia.org/wiki/Guarded_Command_Language#Selection:_if][Guarded Command Language] 에서 영감을 받았습니다 .
그러나이 구문은 조건이 병렬로 평가되는 반면 if...else-if
조건에 대한 순차적이고 우선 순위가 높은 평가를 의미합니다.
다른 프로그램을 생성하는 프로그램을 작성할 때 이러한 작업을 시작했습니다. 특히 편리한 곳입니다.
인텔의 오래된 iHDL을 사용하여 RTL을 작성할 때 다음과 같은 코드를 작성했습니다.
IF 0 THEN /*nothing*/
**FORC i FROM 1 TO 10 DOC**
ELSE IF signal%i% THEN
// stuff to do if signal%i% is active
**ENDC**
ELSE
// nothing matched
ENDIF
여기서 FORC..DOC..ENDC
매크로 전 처리기 루프 구조는 다음과 같이 확장됩니다.
IF 0 THEN /*nothing*/
ELSE IF signal1 THEN
// stuff to do if signal1 is active
ELSE IF signal2 THEN
// stuff to do if signal2 is active
...
ELSE IF signal100 THEN
// stuff to do if signal100 is active
ELSE
// nothing matched
ENDIF
이것은 비 할당적인 단일 할당 코드이므로 첫 번째 설정 비트 찾기와 같은 작업을 수행해야하는 경우 상태 변수를 설정할 수 없습니다.
IF 0 THEN /*nothing*/
ELSE IF signal1 THEN
found := 1
ELSE IF signal2 THEN
found := 2
...
ELSE IF signal100 THEN
found := 100
ELSE
// nothing matched
ENDIF
그것을 생각해 보니, 이것은 내가 그런 구조물을 처음 만난 곳 일 수 있습니다.
BTW, if (0) 스타일에 대한 반대 의견-else-if 조건은 순차적으로 종속적이며 임의로 재정렬 할 수 없음-RTL의 AND 및 OR 및 XOR 논리에는 적용되지 않지만 단기에는 적용됩니다 회로 && 및 ||.