source

C++의 "-->" 연산자는 무엇입니까?

manycodes 2023. 2. 6. 23:59
반응형

C++의 "-->" 연산자는 무엇입니까?

에서 C++/STL의 숨겨진 특징어두운 모서리를 읽은comp.lang.c++.moderatedVisual Studio 2008 G++ 4.4 양쪽에 컴파일 되어 기능하고 있는 것에 매우 놀랐습니다.

코드는 다음과 같습니다.

#include <stdio.h>
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 )

아니면 완전히 다른 걸 위해서... x 투 ★★★★★★★★★★★★★★★★★★★★★★★에0.

while (x --\
            \
             \
              \
               > 0)
     printf("%d ", x);

수학적인 건 아니지만...모든 그림은 천 개의 단어를 그린다...

이는 매우 복잡한 연산자이기 때문에 ISO/IEC JTC1(공동 기술 위원회 1)도 C++ 표준의 두 가지 다른 부분에 그 설명을 배치했습니다.

차치하고 두 , 즉 2가지 연산자가 -- ★★★★★★★★★★★★★★★★★」>C++03으로 5.2.6/2로 5.9로 설정합니다.

xC++에서는 반대 방향으로 더 빠르게 제로로 갈 수 있습니다.

int x = 10;

while( 0 <---- x )
{
   printf("%d ", x);
}

8 6 4 2

당신은 화살로 속도를 조절할 수 있어요!

int x = 100;

while( 0 <-------------------- x )
{
   printf("%d ", x);
}

90 80 70 60 50 40 30 20 10

;)

와 동등합니다.

while (x-- > 0)

x--는 (사후감소)에 합니다.x = x-1, 원래 인 (는)을 합니다.x는 다음과 같이

while(x > 0) {
    x = x-1;
    // logic
}
x--;   // The post decrement done when x <= 0

그건…

#include <stdio.h>

int main(void) {
  int x = 10;
  while (x-- > 0) { // x goes to 0
    printf("%d ", x);
  }
  return 0;
}

-- 및 'decrements'>교합니니다다

「 」의 -->역사적 관련성이 있습니다.x86 아키텍처의 증가 속도보다 감소 속도가 빨랐습니다(경우에 따라서는 지금도 마찬가지).「」를 사용합니다.--> x에 가다0수학적인 배경을 가진 사람들에게 어필합니다.

완전 괴짜지만 난 이걸 쓸 거야

#define as ;while

int main(int argc, char* argv[])
{
    int n = atoi(argv[1]);
    do printf("n is %d\n", n) as ( n --> 0);
    return 0;
}
while( x-- > 0 )

그게 어떻게 해석되느냐가 문제죠

내가 읽은 한 책(어느 책인지 정확히 기억나지 않는다)에는 다음과 같이 적혀 있다.컴파일러는 왼쪽 오른쪽 규칙을 사용하여 식을 가장토큰으로 해석하려고 합니다.

이 경우 표현은 다음과 같습니다.

x-->0

가장 큰 토큰으로 구문 분석:

token 1: x
token 2: --
token 3: >
token 4: 0
conclude: x-- > 0

다음 식에도 동일한 규칙이 적용됩니다.

a-----b

해석 후:

token 1: a
token 2: --
token 3: --
token 4: -
token 5: b
conclude: (a--)-- - b

이것은 와 완전히 같다.

while (x--)

어쨌든, "이동" 교환원이 있습니다. "-->"방향으로서 기억되기 쉽고, 「x가 0이 되는 동안」은 의미에 어긋난다.

이 은 '', '아니다', '아니다', '아니다', '아니다."for (x = 10; x > 0; x --)"를 참조해 주세요.

한 후 번째답변에서도 x는 0으로 합니다.) (x는 0으로 (0으로 감소x합니다.)>「」). 코드의 출력을 참조해 주세요.

9 8 7 6 5 4 3 2 1 0

먼저 비교한 후 출력에 0이 표시됨으로써 감소합니다.

먼저 줄여서 비교하려면 다음 코드를 사용합니다.

#include <stdio.h>
int main(void)
{
    int x = 10;

    while( --x> 0 ) // x goes to 0
    {
        printf("%d ", x);
    }
    return 0;
}

출력은 다음과 같습니다.

9 8 7 6 5 4 3 2 1

이 코드를 실행하면 컴파일러가 9876543210을 출력합니다.

#include <iostream>
int main()
{
    int x = 10;

    while( x --> 0 ) // x goes to 0
    {
        std::cout << x;
    }
}

★★★★★★while( x-- > 0 )는 ""를 의미합니다.while( x > 0) . 。x-- decrements(감소)x.

while( x > 0 ) 
{
    x--;
    std::cout << x;
}

같은 것을 쓰는 다른 방법입니다.

원본이 "x가 0으로 가는 동안"처럼 보이는 것은 좋습니다.

이 있다-- ★★★★★★★★★★★★★★★★★」>xdecremented,즉 "Decremented", "Decremented", "Decremented"를합니다.x>0 ?.

--는 감소 연산자이며,> 큰 연산자입니다.

는 같이 로 적용됩니다.-->.

을 사용하다 번째 번째-- 위한 것입니다.또, 「감소」라고 하는 것도 있습니다.>값이 오른쪽 피연산자보다 큰지 여부를 확인합니다.

#include<stdio.h>

int main()
{
    int x = 10;

    while (x-- > 0)
        printf("%d ",x);

    return 0;
}

출력은 다음과 같습니다.

9 8 7 6 5 4 3 2 1 0            

C++는 'C++'입니다. 방법으로 ★★★★★★a---b됩니다.(a--) - b 「」의,x-->0요.(x--)>0.

기본적으로 규칙에서 말하는 것은 왼쪽에서 오른쪽으로 이동할 때 유효한 토큰을 형성하는 최대 문자 수를 사용하여 표현식이 형성된다는 것입니다.

로로 actually actually actually actually.x는 포스트멘테이션 중이며, 그 상태로 체크되고 있습니다.그런거 아냐.-->은 ,,,,,,,,입니다.(x--) > 0

의의 값: 값x조건이 체크된 후에 변경되는 것은 사후 수정이기 때문입니다.다음과 같은 유사한 경우가 발생할 수 있습니다.

-->    x-->0
++>    x++>0
-->=   x-->=0
++>=   x++>=0

일반 화살표 연산자(-->) 대신 갑옷 천공 화살표 연산자: --x>를 사용할 수 있습니다(화살표 끝에 있는 날카로운 바들에 주의해 주세요).갑옷 천공에 +1이 추가되어 일반 화살 조작자보다 루프 1의 반복이 빠르게 완료됩니다.직접 사용해 보세요.

int x = 10;
while( --x> 0 )
    printf("%d ", x);
char sep = '\n'  /1\
; int i = 68    /1  \
; while (i  ---      1\
                       \
                       /1/1/1                               /1\
                                                            /1\
                                                            /1\
                                                            /1\
                                                            /1\
                            /           1\
                           /            1 \
                          /             1  \
                         /              1   \
                         /1            /1    \
                          /1          /1      \
                           /1        /1        /1/1> 0) std::cout \
                              <<i<<                               sep;

C++20에서는 숫자가 클수록 고급 루프 기능이 도입됩니다. 잡는다i하여 '를 '.std::ostream,, 도의 i는 구현 C 연산자 C++20 을 사용할 수 .<<i<<도를높높 높높높다다안 잡히면 안 잡히면 안 잡히잖아.i이 범위를 벗어나 참조를 해제하면 정의되지 않은 동작이 발생합니다.구분 기호를 지정하려면 다음을 사용합니다.

 std::cout \
           sep

67에서 1까지의 for 루프가 있습니다.

왜 이렇게 복잡해?

첫 번째 질문에 대한 간단한 답변은 다음과 같습니다.

#include <stdio.h>

int main()
{
    int x = 10;
    while (x > 0)
    {
        printf("%d ", x);
        x = x-1;
    }
}

같은 일을 합니다.이렇게 하라는 것은 아니지만, 같은 방법으로 한 번에 질문에 대답할 수 있습니다.

x--이며, 「이러다」라고 하는 은,>보다 더 큰 입니다.operator★★★★★★★★★★★★★★★★★★★★★★★!

요즘은 간단한 것을 복잡하게 만드는 사람이 너무 많아;)

괄호 while loopinisis in in in in condition in in in conv we we we we we we we we we we conv conv conv conv conv conv conv conv conv conv conv conv conv 로 조건을 정의하는 일반적인 방법()및 종료 " " " 및및및및및및 " "{} 이 '이거'는--&>한 번에 정의할 수 있는 방법입니다.예를 들어 다음과 같습니다.

int abc(){
    int a = 5
    while((a--) > 0){ // Decrement and comparison both at once
        // Code
    }
}

, 줄이다, 줄이다, 줄이다, 줄이다, 줄이다, 줄이다, 줄이다, 줄이다, 줄이다, 줄이다.a까지 합니다.a 0

다른 방법으로는 다음과 같았어야 했습니다.

int abc() {
    int a = 5;
    while(a > 0) {
        a = a -1 // Decrement inside loop
        // Code
    }
}

어느 쪽이든 우리는 같은 일을 하고 같은 목표를 달성한다.

(x --> 0)「」를 의미합니다.(x-- > 0).

  1. 하시면 됩니다.(x -->)
    Output: 9 8 7 6 5 4 3 2 1 0
  1. 하시면 됩니다.(-- x > 0)(--x > 0)
    Output: 9 8 7 6 5 4 3 2 1
  1. 사용할 수 있습니다.
(--\
    \
     x > 0)

Output: 9 8 7 6 5 4 3 2 1

  1. 사용할 수 있습니다.
(\
  \
   x --> 0)

Output: 9 8 7 6 5 4 3 2 1 0

  1. 사용할 수 있습니다.
(\
  \
   x --> 0
          \
           \
            )

Output: 9 8 7 6 5 4 3 2 1 0

  1. 를 사용할 수도 있습니다.
(
 x 
  --> 
      0
       )

Output: 9 8 7 6 5 4 3 2 1 0

마찬가지로 이 명령을 성공적으로 실행하기 위해 여러 가지 방법을 시도할 수 있습니다.

★★★★★★★★★★★★★★★★★.-->전혀 연산자가 아닙니다.요.-> 그런 것은 아닙니다.--> 잘못 한 것입니다.while(x-- >0)즉, x에 포스트 디크리먼트 연산자가 있고 이 루프는 0보다 클 때까지 실행됩니다.

이 코드를 쓰는 또 다른 간단한 방법은while(x--)while loop은 잘못된 상태가 될 때마다 정지합니다.여기에는 1개의 케이스만 있습니다.0따라서 x 값이 0으로 감소하면 중지됩니다.

서 ★★★★--는 단항 포스트 감소 연산자입니다.

 while (x-- > 0) // x goes to 0
 {
     printf("%d ", x);
 }
  • 가 좋다, 하다, 하다, 라고 평가합니다.(x > 0) // 10 > 0
  • true이기 .x-- // x = 9
  • 그래서 첫 번째 인쇄된 값은 9입니다.
  • 루프에서x=1참말이다.연산자에 이 항항음음음음음음음음음음음음음음음음음음 as as as as로 .x = 0인쇄 당시.
  • 그럼 이제 ㅇㅇㅇㄹㄹㄹㄹ,x = 0(x > 0 )while 루프가 종료됩니다.

--> '연산자'의 입니다.--및 (사후평가)>(서양속담, 노력속담)

루프는 다음과 같이 표시됩니다.

#include <stdio.h>
int main() {
    int x = 10;
    while (x-- > 0) { // x goes to 0
        printf("%d ", x);
    }
}

는 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.10및 (제외 상한)0포함된 하한. 배열의 요소를 마지막에서 처음까지 반복하는 데 유용합니다.

'''」10는 총 반복 횟수(배열 길이 등)와 루프 내에서 사용되는 첫 번째 값에 1을 더한 값입니다.0 is 、 is 、 is 、 is 、 is 、 is 。x코멘트 x는 0이 됩니다.

「」의 .x는 " " " 입니다.-1.

또, 이 루프는, 다음과 같이 동작하는 것에 주의해 주세요.x다음과 같은 부호 없는 유형이 있습니다.size_t한 대안보다 for (i = length-1; i >= 0; i--).

이러한 이유로 저는 사실 이 놀라운 구문의 팬입니다.while (x --> 0)는 이 우아하다고 for (;;)vs:while (1)은 (어느새)와 보입니다.while (l)C++, Objective-C, java, javascript, C#의 경우 C++, Objective-C, javascript, C#의 경우 C#의 경우.

그런 뜻이군요.

while((x--) > 0)

어렸을 때 들은 얘기인데

Stop don't, Let Go (스톱 하지 마, 렛 고)

콤마가 혼동을 일으키는 경우

멈춰, 놓지 마.(ت ج ( ( ( ( ( ( ( ( ( ()

현재 프로그래밍에서도 마찬가지입니다.SPACE가 혼란을 일으킵니다.:D

사용하는 연산자를 "감소 후 테스트"라고 합니다.C 프로그래밍 언어 표준의 최신 버전인 C99 표준에 정의되어 있습니다.C99 표준은 "감소 후 테스트" 연산자를 포함하여 다수의 새로운 연산자를 C 언어에 추가했습니다.많은 C++ 컴파일러가 이러한 새로운 연산자를 C++ 언어의 확장자로 채택하고 있습니다.

"decrement-and-test" 연산자를 사용하지 않는 코드는 다음과 같습니다.

#include <stdio.h>
int main()
{
    int x = 10;
    while (x > 0)
    {
        printf("%d ", x);
        x--;
    }
}

에서는, 「」는while은 ''를 합니다.>연산자가 테스트하는지 여부를 확인합니다.x0보다 .x--됩니다.x1로 하다

언급URL : https://stackoverflow.com/questions/1642028/what-is-the-operator-in-c

반응형