임베디드 프로젝트에 SDK를 사용하고 있습니다. 이 소스 코드에서 적어도 나는 특이한 코드를 발견했습니다. SDK의 여러 위치에 다음 형식의 소스 코드가 있습니다.
#define ATCI_IS_LOWER( alpha_char ) ( ( (alpha_char >= ATCI_char_a) && (alpha_char <= ATCI_char_z) ) ? 1 : 0 )
#define ATCI_IS_UPPER( alpha_char ) ( ( (alpha_char >= ATCI_CHAR_A) && (alpha_char <= ATCI_CHAR_Z) ) ? 1 : 0 )
여기서 삼항 연산자를 사용하면 차이가 있습니까?
그렇지 않다
#define FOO (1 > 0)
같은
#define BAR ( (1 > 0) ? 1 : 0)
?
나는 그것을 사용하여 평가 해 보았습니다.
printf("%d", FOO == BAR);
결과 1을 얻습니다. 그래서 그들은 같은 것 같습니다. 그들이했던 것처럼 코드를 작성해야하는 이유가 있습니까?