은 이것이다 :삼항 연산자 컴파일러 최적화
int val;
// ...
val = (val != 0) ? otherVal : 0;
이보다 효율적인
int val;
//...
if (val != 0)
val = otherVal;
?
컴파일러는 3 진 연산자를 최적화 할 수 있습니까? 의도는 분명합니다. 실제로 메모리에 0을 쓰고 싶을 수있는 방법이 있습니까? 어쩌면 메모리가 파일에 매핑되었을 때?
우리는 상관 없다고 생각할 수 있습니까?
편집 : 요점은 하나의 조건이 충족되면 변수를 일부 값으로 설정하는 것입니다. 다른 분기가 필요하지 않습니다. 그래서 왜 삼진 (사본을 만들 의무가있는 지사가있는)이 덜 효과적이거나 최적화 될 것인지 물어 본다.
Duplicit 질문 : http://stackoverflow.com/questions/3565368/ternary-operator-vs-if-else –
내가 컴파일러 프로그래머, 그래서 돈 아니에요 ' 정말로 알지만, 삼항 연산자의 양쪽을 평가할 수 있으므로 분기를 건너 뛸 수 있습니다 (속도가 빨라집니다). – Hassedev
무엇보다도 val은 이미 0 일 때 0으로 설정되며 첫 번째 경우에는 필요하지 않습니다. 컴파일러가 다른 것을 할 수는 없습니다. 가장 읽을 수있는 변형을 작성하십시오. –