스택큐힙리스트

C++에서 "-->" 연산자란 무엇인가요? 본문

카테고리 없음

C++에서 "-->" 연산자란 무엇인가요?

스택큐힙리스트 2023. 3. 3. 01:37
반응형

"Hidden Features and Dark Corners of C++/STL"을 읽은 후에 "comp.lang.c++.moderated"에서 다음 스니펫이 Visual Studio 2008과 G ++ 4.4에서 모두 컴파일되고 작동하는 것에 완전히 놀랐습니다.
여기 코드입니다.
"#include

int main() { int x = 10; while (x --> 0) // x goes to 0 { printf("%d ", x); } } "
번역하십시오.
"9 8 7 6 5 4 3 2 1 0 "
이것은 GCC에서도 작동하므로 C로 추정됩니다. 이것이 표준에서 정의된 곳이 어디이며 어디에서 왔는지 알 수 있을까요?

"-->"은 연산자가 아닙니다. 사실 두 개의 별개의 연산자 "--"와 ">" 입니다.
조건부 코드는 "x" 를 감소시키고, 동시에 "x" 의 원래 값 (감소되지 않은)을 반환하며, 그 후 ">" 연산자를 사용하여 원래 값과 "0" 를 비교합니다.
더 잘 이해하기 위해서, 아래와 같이 명제를 작성할 수 있습니다:
"while( (x--) > 0 ) "

"-->" 연산자란 C++에서 사용되는 연산자 중 하나로, 포인터(pointer)를 사용할 때 사용됩니다. 포인터란 메모리 주소를 저장하는 변수이며, 주소에 저장된 값에 접근하기 위해서는 포인터를 사용해야 합니다. "-->" 연산자는 포인터를 사용할 때 이러한 값에 접근하기 위해서 사용됩니다. 포인터 변수 뒤에 "-->" 연산자를 사용하면, 그 포인터가 가리키는 객체의 멤버 변수나 멤버 함수를 호출할 수 있습니다. 예를 들어, 다음과 같은 코드가 있다고 가정해 봅시다. ``` class MyClass { public: int myInt; void myFunc() { std::cout << "hello, world!" << std::endl; } }; int main() { myclass* myclassptr="new" myclass(); myclassptr->myInt = 123; myClassPtr->myFunc(); delete myClassPtr; return 0; } ``` 위 코드에서는 MyClass 클래스를 정의하고 main 함수에서 포인터를 생성해 MyClass의 멤버 변수와 멤버 함수에 접근합니다. 포인터 변수 myClassPtr에 "-->" 연산자를 사용하여 myInt와 myFunc 함수에 접근합니다. "-->" 연산자는 포인터를 사용할 때 매우 유용합니다. 포인터 변수를 사용하면 메모리 주소를 저장할 수 있으며, "-->" 연산자를 사용해서 해당 객체의 멤버 변수나 멤버 함수에 접근할 수 있습니다. 따라서 C++ 프로그래머라면 포인터와 "-->" 연산자를 잘 이해하고 사용할 수 있어야 합니다.</<>

반응형
Comments