OR, AND 연산에서 앞에서 순서대로 연산된다는 보장이 있나요?
글쓴이: superkkt / 작성시간: 화, 2006/02/21 - 3:04오후
set_status(get_status() | ~STAT_PASV | ~STAT_DTP);
이런 코드를 사용합니다. 현재 상태에서 STAT_PASV, STAT_DTP 비트를 끄는것인데요.. 별 문제는 없는데 가만히 생각해보니 OR 연산이 앞에서부터 순서대로 되지 않는다면 잘못된 결과가 나올 가능성이 있을것 같네요.
만약 앞에서부터 순서대로 된다는 보장이 없다면 아래와 같이 코드를 바꾸는게 좋을것 같은데요..
set_status(get_status() | (~STAT_PASV & ~STAT_DTP));
if문에서는 조건이 앞에서부터 실행된다고 알고있는데 이 경우에도 마찬가지로 적용되는지 궁금합니다.
Forums:
에고.. 제가 잠깐 햇갈렸습니다. 비트를 끄는건 아래와 같이해서 연산 순
에고.. 제가 잠깐 햇갈렸습니다. 비트를 끄는건 아래와 같이해서 연산 순서에 상관이 없군요..
그래도 연산순서가 앞에서부터 되는지 여부는 궁금하네요~ :twisted:
======================
BLOG : http://superkkt.com
C, C++ 언어에서, 피연산자가 하나인 unary operator나,
C, C++ 언어에서, 피연산자가 하나인 unary operator나, 대입 연산자(=, =+, =<<등), 그리고 조건부 연산자(?:)를 제외한 나머지는 왼쪽에서 오른쪽으로 결합합니다. 따라서 쓴 순서대로 앞에서부터 실행됩니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기