2017-02-13 13 views
-1

그래서(C 언어) while 루프에서 두 개의 서로 다른 가능한 정수 값에 대한 조건부 인수를 넣는 방법이 있습니까?

나는이

같은 것을 가지고 우리가 양 또는 음의 정수 이진 문자열 중 하나를 가지고는 왼쪽 최상위 비트에 도착하는 데 걸리는 바로 변화의 양을 계산 할 수있는 기능을 가지고 말할 수
int shiftCount(int x){ 
    int count = 0; 
    int temp = x; 

    while((temp!=1) || (temp!=-1)){ //if negative int, terminate at first -1 
     count+=1; 
     temp=temp>>1; 
    } 

    return count; 
} 

이것은 내가 원하는 것을 반환하지 않습니다. 그것은 결코 끝나지 않는 루프에서 끝납니다. 두 조건을 모두 수행하려고하기 때문에 그것이라고 가정합니다. while 루프에서 2 개의 다른 서명 된 값을 쉽게 테스트 할 수있는 실제 방법이 있습니까? 아니면 각각의 while 루프를 사용하여 2 개의 별도 조건문을 만들어야합니까?

+0

'||'대신'&&'를 의미합니까? '임시! = 1 || temp! = -1'은 temp가 1이 아니거나 -1이 아니라는 것을 의미합니다. 물론 항상 true입니다. –

+0

이와 같은 경우 [De Morgan 's Laws] (https://en.wikipedia.org/wiki/De_Morgan's_laws)를 기억하는 것이 도움이 될 수 있습니다. –

+0

두 경우 모두 올바르게 테스트 할 예정입니까? –

답변

1

당신의 또는 항상 사실입니다. temp1-1 일 수 없으므로 항상 1이 아니거나 -1이 아닙니다.