공부(IT)/c

[c] 연산자도 값을 반환한다.

Dohyun Kim 2016. 2. 6. 00:27

#include<stdio.h>

int main()

{

    int a;

scanf("%d",&a);

printf("%d", a>0? a*=-1 : a);

}

--------------

input : 21

output : -21

---------------

위의 결과에서 다음과같은 사실을 알 수 있다.


1. a=1이나 a*=1과같은 대입연산자도 그 결과를 반환한다.

2. 삼항연산자 안에는 함수나 연산자가 심지어는 다른 삼항연산자 조차도 들어갈수있다.

3. 삼항연산자는 값을 반환한다.




* 이해할순없지만 3번째 항에서는 a*=-1 같은식으로하면 에러난다. 괄호를 쳐주어서 다음과 같이 해주어야한다.

 a>0? a*=-1 : (a*=-1);

아마도 연산자의 우선순위 때문인듯하지만 위와같은 방식은 왠만하면 안쓰는것이 좋을듯 하다.