prefix 연산자와 postfix 연산자의 차이점은 무엇입니까?
9시 정각 ★★★★★★★★★★★★★★★★★★★★★★★.return(i++)
하고 "11"에 "11"이 반환됩니다.--i
10달러입니다. 어떻게 작동하는지 설명해 주실 수 있나요?
#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)
i
로 설정되어 있다.10
(간단).- 이 라인에 두가지.
다음두 가지가 있습니다.
i
증가합니다 로기가 점증한다.11
.- 새로운 가치
i
에 복사됩니다에 복사됩니다.j
. 그래서.그렇게j
지금 이젠 각 동등하다11
.
- 이 라인에 대한 두가지의 것들도:.
이 라인에는 다음 두 가지가 있습니다.
i
증가합니다 로기가 점증한다.12
.- 본래의 가치
i
(이것은(즉,11
))는,에 카피됩니다에 복사됩니다.k
. 그래서.그렇게k
지금 이젠 각 동등하다11
.
코드를 후, " " " " " " "i
둘 다 12가 되다j
★★★★★★★★★★★★★★★★★」k
11이 됩니다.
의 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을 .9
10
생각하시는 대로입니다.
두 가지 예가 차이를 보여줍니다.
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
라고 하는 변수입니다.i
main()
두 개의 다른 변수입니다.현재 논의에서는 별로 중요하지 않다고 생각하지만, 알아두는 것이 중요합니다.
번째, 증가 는 증가 의 연산자를 합니다.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
.
프리픽스 감소는 피연산자가 평가되기 전에 피연산자의 값을 증가시킵니다.가치--i
i - 1
.
프레픽스의 증가/감소는 식을 평가하기 전에 값을 변경합니다.postfix의 증가/감소 후 값이 변경됩니다.
당신의 ,, 신, 신, 우, 우, sofun(10)
하고 10을 인쇄합니다.--i
i - 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
'programing' 카테고리의 다른 글
이 논리를 Vuex 스토어에 배치해야 합니까?매장 또는 로컬 컴포넌트 상태에 있어야 할 시기를 알 수 없습니다. (0) | 2022.08.25 |
---|---|
Java의 해시맵과 해시테이블의 차이점은 무엇입니까? (0) | 2022.08.25 |
백엔드 응답에 따라 먼저 Vue 앱을 초기화하려면 어떻게 해야 합니까? (0) | 2022.08.25 |
vue.js 단위의 각 ng-container 당량 (0) | 2022.08.25 |
Larabel Vue.js와 CKeditor 4 및 CKFinder 3의 통합(파일 매니저) (0) | 2022.08.25 |