c 증감연산자

떵떵·2022년 5월 30일
0

c언어에서는 ++, --라는 '증감연산자'를 제공한다.

++ 1증가

-- 1감소

정수에서는 1을 증가,감소 시키지만, 포인터 연산에서는 자료형 크기만큼 증가, 감소시킴

사용법

정수, 실수

int main(){
 	int num1 = 1;
    float num2 = 1.1f;
    
    num1++;
    num2++;
    
    printf("%d %f", num1, num2);
    return 0;
}
>>> 2
>>> 2.1

실수에 증감연산자를 써도 소수짐 밑에 자리수에 영향 없이 1만 증감 됨

문자

int main(){
	char num1 = 'b';
    char num2 = 'b';
    
    num1++;
    num2--;
    
    printf("%c %c", num1, num2);
    return 0;
}
>>> c
>>> a

문자형의 문자는 아스키코드로 숫자로 저장되어있기 때문에 증감연산자로 1씩 증감되면 서식지정자가 "%c" 일때 해당하는 문자로 출력 됨

위치에 따른 차이점

증감연산자는 변수 앞뒤로 사용가능

++num;
num ++;

ex) num++

	int num1 = 1;
    int num2;
    
    num2 = num1++;
    
    printf("%d", num2);
    return 0;
    
>>> 1

위의 num2의 출력이 2가 될 줄 알았는데 1이다. 왜일까?

num2 = num1++;의 작동방식을 풀어보겠다

num2 = num1;
num1 = num1 + 1;
으로 num1을 num2에 할당하고 num1 =+ 1이 실행되므로
num2 = 1, num1 =2가 된다

ex) ++num

	int num1 = 1;
    int num2;
    
    num2 = ++num1;
    
    printf("%d", num2);
    return 0;
    
>>> 2

위의 num2의 출력은 2이다. 왜 num++과 다를까?

num2 = ++num1;의 작동방식을 풀어보겠다.

num1 = num1 + 1;
num2 = num1;
으로 num1을 1증가시키고 num2에 할당하므로
num2 = 2, num1 = 2가 된다.

++num을 전위연산자(prefix)

num++을 후위연산자(postfix)

0개의 댓글