리얼 짧고 간단한 식으로 작동 :C 의미 "COL - = size--"구비하거나 ++ -
가 size = 8
col = 10
을 말한다. 그러면 다음과 같이 실행됩니다 :
col -= size--;
그래서 col (subt = col = 3)에서 뺄셈을하기 전에 크기를 7로 빼면됩니까? 또는 col = 2입니까?
감사
리얼 짧고 간단한 식으로 작동 :C 의미 "COL - = size--"구비하거나 ++ -
가 size = 8
col = 10
을 말한다. 그러면 다음과 같이 실행됩니다 :
col -= size--;
그래서 col (subt = col = 3)에서 뺄셈을하기 전에 크기를 7로 빼면됩니까? 또는 col = 2입니까?
감사
size--
가 size
의 이전 값을 산출 같을 것이고, 따라서 이것은 동등하다 :
col -= size;
-- size;
size--
감소시키고 크기와 원래의 값을 (--size
이 감소하고 새 값을 반환) 반환합니다.
오른쪽 식은 왼쪽보다 먼저 계산되므로 오른쪽 값은 col
에서 뺍니다.
col = 10
및 size = 8
경우 col -= size--
후 size
7 같을 것이고 col
2.
때 ++
또는 --
이 피연산자 뒤에 나타나면 값이 먼저 반환 된 다음 증분/감소됩니다. 전에 나타나면 반대입니다.
답변은 col = 8
이어야합니다. 방법? 어 size--
을 mmhmm 너무 : 컴파일러의 머리에
:
컴파일러를
col -= size--;
는 다음과 같이 해석된다? 좋아요, col
은 무엇인가요? 10
? 그리고 size
은 .. 8
? 해당 작업을 완료 한 후 col
에서 2
으로 설정 한 다음 size
을 감소시킵니다. 그것은
을했다 경우 col -= --size;
은 다음과 같습니다
컴파일러 : mmhmm, 그래서 --size
응? 좋아요, size
은 무엇입니까? 8
? 7
..로 설정하고 col
은 10
입니까? 그 뺄셈 이후의 대답은 col = 3
입니다. 그래서 컴파일러는 상사를 생각합니다.
이것은 약간 질질 끌기는하지만,이 질문에 대한 답을 얻은 바로 그 이유로 인해 증분 또는 감소 연산자를 사용하지 않는 것이 좋습니다. 그것은 코드의 의도를 덜 분명하게하고, off-by-one 오류에 대한 달콤한 자리를 만들고, 경험 많은 코더에게도 정신적 인 스피드 범프입니다. – jrajav