C/C++ 언어의 printf 함수에서 포인터가 가리키는 배열의 값을 출력할 때 포인터의 값이 왜 이렇게 변하는 걸까요?
大家讲道理
大家讲道理 2017-06-27 09:18:57
0
4
1530

1. prinf 함수의 매개변수에는 포인터 표현식이 포함되어 있습니다. 코드 연산 결과는 분명히 왼쪽에서 오른쪽으로 계산되지 않습니다.

으아아아

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(4)
给我你的怀抱

하나의 명령문에서 변수를 여러 번 변경하는 것은 정의되지 않은 동작이며 플랫폼에 따라 결과가 다를 수 있습니다. 이 질문은 말이 되지 않습니다.

学习ing

printf{"%d",++i} 두 가지 작업을 의미합니다

먼저 i=i+1을 실행한 다음 i를 출력합니다

i++는

을 의미합니다.

첫 번째 출력 후 i=i+1

을 실행합니다.
某草草

함수 매개변수의 작동 순서는 함수의 내부 논리와 거의 관련이 없습니다. 스택에 푸시되기 전(함수가 실행되기 전)++p,函数结束后,再计算p++을 계산해야 합니다. 구체적인 순서를 알고 싶으시면 어셈블리 코드를 참고하시면 됩니다. (구체적인 의미는 내일 업데이트 예정입니다 죄송합니다)

으아악

여담:
결과에 나타나는 2와 3은 여전히 ​​설명이 가능합니다.
4 참 이상하네요. 굳이 설명하자면 *(++p)++ 괄호 밖의 ++p 작동합니다, *(++p)++括号外面的++也对p起作用了,
但是形如p++运算符,应该在语句结束后才自增的,所以这样解释明显不对。
我在Cygwin + gcc (GCC) 5.4.0하지만 p++ 형식의 연산자는 명령문이 끝난 후 증가해야 하므로 이 설명은 명백히 잘못된 것입니다.

저는 Cygwin + gcc(GCC) 5.4.0 환경에서 실행한 결과는 다음과 같습니다. 4 어떤 환경이 사용되나요? 🎜 으아악
ringa_lee

함수 매개변수가 스택에 푸시되는 순서는 확실합니다. 단지参数的求值顺序是未指定的,
编译器只保证在printf调用之前,所有参数的值是已知的
这方面的资料可以搜索序列点(Sequence Point)

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿