2012-11-05 2 views
1

리얼 짧고 간단한 식으로 작동 :C 의미 "COL - = size--"구비하거나 ++ -

size = 8col = 10을 말한다. 그러면 다음과 같이 실행됩니다 :

col -= size--; 

그래서 col (subt = col = 3)에서 뺄셈을하기 전에 크기를 7로 빼면됩니까? 또는 col = 2입니까?

감사

답변

4

size--size의 이전 값을 산출 같을 것이고, 따라서 이것은 동등하다 :

col -= size; 
-- size; 
+0

이것은 약간 질질 끌기는하지만,이 질문에 대한 답을 얻은 바로 그 이유로 인해 증분 또는 감소 연산자를 사용하지 않는 것이 좋습니다. 그것은 코드의 의도를 덜 분명하게하고, off-by-one 오류에 대한 달콤한 자리를 만들고, 경험 많은 코더에게도 정신적 인 스피드 범프입니다. – jrajav

1

size-- 감소시키고 크기와 원래의 값을 (--size이 감소하고 새 값을 반환) 반환합니다.

오른쪽 식은 왼쪽보다 먼저 계산되므로 오른쪽 값은 col에서 뺍니다.

col = 10size = 8 경우 col -= size--size 7 같을 것이고 col 2.

1

++ 또는 --이 피연산자 뒤에 나타나면 값이 먼저 반환 된 다음 증분/감소됩니다. 전에 나타나면 반대입니다.

1

답변은 col = 8이어야합니다. 방법? 어 size--을 mmhmm 너무 : 컴파일러의 머리에

:

컴파일러를

col -= size--; 는 다음과 같이 해석된다? 좋아요, col은 무엇인가요? 10? 그리고 size은 .. 8? 해당 작업을 완료 한 후 col에서 2으로 설정 한 다음 size을 감소시킵니다. 그것은

을했다 경우 col -= --size;은 다음과 같습니다

컴파일러 : mmhmm, 그래서 --size 응? 좋아요, size은 무엇입니까? 8? 7 ..로 설정하고 col10입니까? 그 뺄셈 이후의 대답은 col = 3입니다. 그래서 컴파일러는 상사를 생각합니다.