programing

prefix 연산자와 postfix 연산자의 차이점은 무엇입니까?

bestcode 2022. 8. 25. 23:56
반응형

prefix 연산자와 postfix 연산자의 차이점은 무엇입니까?

9시 정각 ★★★★★★★★★★★★★★★★★★★★★★★.return(i++)하고 "11"에 "11"이 반환됩니다.--i10달러입니다. 어떻게 작동하는지 설명해 주실 수 있나요?

#include<stdio.h>
main()
{
    int i= fun(10);
    printf("%d\n",--i);
}

int fun (int i)
{
    return(i++);
}

의 postfix 버전과 prefix 버전 사이에는 큰 차이가 있습니다.++.

버전 「」)에서는,++i입니다.i이 식의 값은 의 새로운 값입니다.i.

버전 「」)에서는,i++입니다.i증가하지만 식의 값은 의 원래 값입니다.i.

다음 코드를 한 줄씩 분석합니다.

int i = 10;   // (1)
int j = ++i;  // (2)
int k = i++;  // (3)
  1. i로 설정되어 있다.10(간단).
  2. 이 라인에 두가지. 다음두 가지가 있습니다.
    • i증가합니다 로기가 점증한다.11.
    • 새로운 가치i에 복사됩니다에 복사됩니다.j. 그래서.그렇게j지금 이젠 각 동등하다11.
  3. 이 라인에 대한 두가지의 것들도:. 이 라인에는 다음 두 가지가 있습니다.
    • i증가합니다 로기가 점증한다.12.
    • 본래의 가치i(이것은(즉,11))는,에 카피됩니다에 복사됩니다.k. 그래서.그렇게k지금 이젠 각 동등하다11.

코드를 후, " " " " " " "i 둘 다 12가 되다j ★★★★★★★★★★★★★★★★★」k11이 됩니다.

의 postfix와 prefix 버전 prefix에 됩니다.--.

접두사:

int a=0;

int b=++a;          // b=1,a=1 

할당 전에 값이 증가합니다.

포스트픽스:

int a=0;
int b=a++;  // a=1,b=0 

먼저 'a'의 값을 'b'에 할당한 후 'a'의 값을 증가시킨다.

이 일은 가능한 한 간단하게 합시다.

let i = 1
console.log('A', i)    // 1
console.log('B', ++i)  // 2
console.log('C', i++)  // 2
console.log('D', i)    // 3

A) I의 값을 인쇄합니다.

B) 처음에 i가 증가하고 console.log가 i와 함께 실행됩니다.이것은 새로운 값이기 때문입니다.

C) Console.log가 i와 함께 현재 값으로 실행되면 I가 증가합니다.

D) i 의 값을 인쇄합니다.

즉, pre-shorthand(+i)를 사용하면 회선이 실행되기 전에 업데이트가 됩니다.post-shorth를 사용하면 (i++) 현재의 행은 아직 갱신되지 않은 것처럼 동작합니다.그러면 저는 증가하기 때문에 다음에 당신의 통역사가 만났을 때 증가하게 됩니다.

가 반환되다보다 먼저 됩니다.i 연산자를 합니다.post-fix는 post-fix 연산자(+). 「」, 「」의 은, 「」i글로벌하지 않습니다.을 사용하다연산자를 했다면 prefix 연산자가 .11 다음 줄여서 ㄴㄴㄴㄴㄴㄴㄴㄴ다로 줄었어요.10.

후, 「 」를 반환해 주세요.i 10을 .910생각하시는 대로입니다.

두 가지 예가 차이를 보여줍니다.

int a , b , c = 0 ; 
a = ++c ; 
b = c++ ;
printf (" %d %d %d " , a , b , c++);
  • 값값을 값 1로 하여 값 1은 c 0 0c 0 1 음 1 음 1 음 1 음 1 음 음 。a = 1 of 의 값c = 1
  • c = 1에 c의 은 1이 됩니다.b = 1 of 의 값c = 2

  • printf「 있다」라고 하는 .c++, 된 후 증가하므로 c는 2인 의 Orginal 값이 1인 c가 됩니다.printf는 「이렇게 하다」라고 됩니다.1 1 2은 3 의 c 입 3 입 입 3 니 니다.

http://pythontutor.com/c.html 를 사용할 수 있습니다.

int a , b , c = 0 ; 
a = ++c ; 
b = c++ ;
printf (" %d %d %d " , a , b , ++c);
  • 여여 here에printf 「」++c시킨 후 값하여 "c" "1" "3" "c" "3" "c" "1" "3" "c" "1" "3" "c" "1" "3" "c" "3" "c" "1" "3" "c" "3" "c" "c" "1" "1"printf는 「이렇게 하다」라고 됩니다.1 1 3

번째로 는 '이러다'로 명명되어 .i라고 하는 변수입니다.imain()두 개의 다른 변수입니다.현재 논의에서는 별로 중요하지 않다고 생각하지만, 알아두는 것이 중요합니다.

번째, 증가 는 증가 의 연산자를 합니다.fun()즉, 이 식의 결과는 의 값입니다. i 값 이 됩니다.열한 살i열 번 ''i다른 변수인 경우 값 10이 할당되며, 이 값이 감소하여 9가 됩니다.

설명:

1 서 11: int fun(int);합니다.fun().

2 서 22: int i = fun(10);되며, 그 는 "i"입니다.fun(10)에 저장됩니다.i.

3 서 3: int fun(int i){ return (i++); }<고객명>fun().return(i++)돌아오다10왜냐면i++아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.

4단계: 그런 다음 컨트롤을 메인 기능과 값으로 되돌립니다.10 에 .i.

5 ★★ 5: printf("%d\n", --i);서 ★★★★--i사전 계약으로 표시되어 있습니다. 값이 됩니다.9.

★★★★★★★★★★★★★★★★★.return (i++)10만 됩니다.

++ 및 -- 연산자는 변수 앞 또는 뒤에 배치될 수 있으며 효과는 다릅니다.이전 버전인 경우 처리 및 반환되며 기본적으로 (i-1) 또는 (i+1)과 동일하게 처리되지만 ++ 또는 -- i 뒤에 배치하면 반환이 필수적입니다.

return i;
i + 1;

따라서 10이 반환되고 절대 증가하지 않습니다.

의 인크리먼트 「」++는 평가될 때까지 피연산자의 값을 증가시키지 않습니다.「」의 값i++i.

프리픽스 감소는 피연산자가 평가되기 전에 피연산자의 을 증가시킵니다.가치--ii - 1.

프레픽스의 증가/감소는 식을 평가하기 전에 값을 변경합니다.postfix의 증가/감소 후 값이 변경됩니다.

당신의 ,, 신, 신, 우, 우, sofun(10)하고 10을 인쇄합니다.--ii - 1 9시, 9시이다.

i++는 포스트 인크리먼트입니다.값이 반환된 후에 증분됩니다.

이는 증가 후 연산자가 작동하는 방식과 관련이 있습니다.i 값을 반환하고 값을 증가시킵니다.

실제로 postfix(i++)를 사용하면 i의 초기값이 증분값이 아닌 반환에 사용됩니다.그 후 i의 값은 1씩 증가합니다.그리고 이것은 i++를 사용하는 모든 문에서 발생합니다. 즉, 식에서 첫 번째 초기 값 i가 사용된 후 증가합니다.

접두사에서는 정반대의 현상이 발생합니다.++i를 반환할 경우 증가된 값인 11이 반환됩니다. 즉, 1을 추가한 후 반환되기 때문입니다.

fun(10)은 10을 반환합니다.11을 반환하려면 i++가 아닌 ++i를 사용해야 합니다.

int fun(int i)
{
    return ++i;
}

언급URL : https://stackoverflow.com/questions/7031326/what-is-the-difference-between-prefix-and-postfix-operators

반응형