minjoonist   4년 전

1~n까지 합을 구하려고 하는데

이게 Undefined Behavior 인가요??

p_ce1052   4년 전

++N 과 N이 하나의 식 안에 있어서 사용자가 어떤 상태를 의도했는지 알 수 없어서 그런 것 같습니다. 실제로 합공식 (N+1)N/2 을 의도하셨겠지만 저 식은 ++가 앞에있어서 그냥 볼때는 (N+1)(N+1)/2가 나와야 할 것 같기도합니다.

dyk777   4년 전

전 well-defined라고 생각합니다.

* 연산자에 의해 우선순위가 왼쪽->오른쪽임이 명확하고, 왼쪽의 expression인 ++n이 먼저 평가 된 후 n이 평가될 것 같습니다.

다만, 윗 분 말씀처럼 실제 계산 결과는 (n+1)2/2가 나와서 답은 틀릴 것 같네요.

sait2000   4년 전

UB입니다 아마도

@dyk777 우선순위는 평가 순서와 관계없습니다 아마도.

https://en.cppreference.com/w/cpp/language/eval_order

dyk777   4년 전

평가 순서와 연산자의 우선순위가 관계 없는걸 간과했군요. 하나 배워갑니다.

댓글을 작성하려면 로그인해야 합니다.