programing

C의 i++와 (i)++의 차이

prostudy 2022. 8. 29. 21:30
반응형

C의 i++와 (i)++의 차이

int i = 3;
int j = (i)++;

int i = 3;
int j = i ++;

위의 두 사례의 평가방법에 차이가 있습니까?

첫 번째 케이스는 r값의 증분에 상당합니까, 아니면 정의되지 않은 동작입니까?

i++그리고.(i)++똑같이 행동하다C 2018 6.5.1 5는 다음과 같이 말한다.

괄호로 묶인 표현식이 주요 표현식입니다.유형 및 값은 부모 없는 식과 동일합니다.부모화되지 않은 식이 각각 l값, 함수 지정자 또는 void 식인 경우 lvalue, 함수 지정자 또는 void 식입니다.

그 표현은 C 1999와 같다.

이 간단한 예에서는i++(i)++Eric Expischil의 답변에서 언급되었듯이, 차이는 없습니다.

단, 이 차이는 포인터 변수를 참조할 때 실제로 의미가 있습니다.*연산자와 증분 연산자를 사용합니다.*p++그리고.(*p)++.

전자의 문은 포인터를 폐기한 후 포인터 자체를 증가시킵니다.후자의 문은 포인터를 폐기한 후 참조된 값을 증가시킵니다.

언급URL : https://stackoverflow.com/questions/54908480/difference-between-i-and-i-in-c

반응형