반응형

+if or 비교시 어떤 식의 성공으로 진입했는지 구분

가끔 복수의 or 조건으로 진입한 경우, 어떤 식의 성공으로 왔는지 간단하게 구분이 필요할 수 있다.

다시 어떤 식인지 판단해줘야 하는데 귀찮은 작업이다.

어떤 식의 만족으로 먼저 들어왔는지 간단히 판단하려면... 다음과 같은 팁이 있다.


예를 들어, 입력값 조건 순서가 

1. 길이가 3이상이거나 

2. a로 시작하거나 

3. z로 끝난다.

위 세 조건을 or로 하여 먼저 만족하는 것은 어떤 것인가를 판단.


string str="....." ;

int ret=0 ;

if (  (ret=1, str.length()>=3 ) ||

    (ret=2, str.at(0)=='a') ||

   (ret=3, str.at( str.length()-1)=='z') ) {

std::cout << " match.  ret=" << ret << std::endl ;

 } else std::cout << " no match. " << std::endl ;


결과는 다음과 같다.

str="12345"  인 경우  ret=1  (길이 조건)

str="ab" 인 경우 ret=2 (a로 시작)

str="kz" 인 경우 ret=3 (z로 끝)

str="abz" 인 경우 ret=1 (길이 조건, a로 시작, z로 끝.  앞의 조건부터 판단하므로 ret=1로 됨.)







'Develop > C&CPP' 카테고리의 다른 글

const pointer or pointer / int *const / int const * / const int *  (0) 2018.07.19
libcurl HTTP POST send 모듈/curl 커맨드 방식도 지원  (0) 2018.07.13
Numerics library  (0) 2018.06.21
Preprocessor  (0) 2018.06.20
deque  (0) 2018.06.13

+ Recent posts