공부(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);
아마도 연산자의 우선순위 때문인듯하지만 위와같은 방식은 왠만하면 안쓰는것이 좋을듯 하다.