c언어에서는 ++, --라는 '증감연산자'를 제공한다.
정수에서는 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)