위에서 언급 한 질문은 다음과 같습니다. 두 정수 x1과 x2가 x1과 x2가 다른 다른 정수 x3을 찾음 x2를 사용하여 if 키워드를 사용하지 마십시오.두 개의 정수가 주어진 경우 두 번째 정수와 다른 경우 세 번째 정수를 찾으십시오.
내 솔루션은 정수에 대한 비트 단위 연산과 두 비트가 같지 않은 경우에만 두 비트 간의 XOR이 1을 반환한다는 것을 기반으로합니다.
이 해결책이 유효합니까? 더 나은 솔루션을 찾을 수 있습니까? 물론 런타임에 고려해야 할 사항과 메모리 사용량은 가능한 한 좋아야합니다.
참고 : 삼항 운영 및 비교 (.! 즉 - =, ==)뿐만 아니라 사전에
감사합니다,
가이 허용되지 않습니다.
내 솔루션 : 그들은 더 if
키워드가 다음 ternaries는 공정한 게임 없어야 말했다 이후
int foo(int x1,int x2)
{
// xor
int x3 = x1^x2;
// another xor
x3 = x3^x2;
// not
x3 = ~x3;
return x3;
}
이 무엇 '~ (x^y^y)'는 단지'~ x'이므로,'y = ~ x' 인 경우에는 작동하지 않습니다. – Ryan
'z = x^y; z = z^y'는'z = x'를 의미하고'z == ~ x'는'~ x == y'가 될 수 있습니다 ??? –
'c == 1'이면 x를, 'c == 0'이면 y를 곱하면 'a = c * x + (1-c) * y'라는 곱셈 속성을 사용하여 위장 된'if'를 할 수 있습니다. 어떤 식 으로든 그것을 사용하고있을 수 있습니까? –