선생님이이 코드를 제공하고 31,40을 반환하지만 이유를 파악할 수 없습니다. 그것이 무엇을 반환하는지에 대한 이유는 무엇입니까? f(ptr--)
및 ptr
불특정 (그리고 더 specificaly ptr--
및 ptr
사이 평가 순서 반면포인터 배열의 증가 및 감소
f(f(ptr--), ptr)
:
void main() {
int *ptr;
int arr[5] = { 10, 20, 30, 40, 50 };
ptr = &arr[3];
cout << ++*ptr-- << ", " << *ptr;
}
마지막'* ptr '과 첫 번째'ptr -'사이에는 순서 지점이 없으므로 UB입니다. – Jarod42
'void main()'은'int main()'이어야합니다; C++을 가르치려는 사람은 그것을 알아야합니다. 귀하의 제목에 "포인터 배열"이 언급되어 있지만 프로그램에 "포인터 배열"이없고 배열이 있고 포인터가 있습니다 –
@ Jarod42 :'<<'는 오버로드되어 있으며 내장 함수가 아니라 함수 호출입니다. 연산자는 잘 정의 된 동작을하기에 충분한 시퀀스 포인트를 제공한다고 생각하지만 재 작성해야하는 엉뚱한 코드입니다 –