2010. 3. 24. 20:35
1.산술 연산자 (Arithmetic operator)
가감승제 연산자: [+->+] [-->-] [×->*] [÷->/] 붉게 표시한 연산자로 사용
나머지 연산자 : % 왼쪽값을 오른쪽값으로 나눈 후 그 나머지 (ex.10%3을 하면 그 값은 1이된다.)
♧ int num1 =10;
int num2 =5;
①num1 = num1+num2;
②num1+=num2;
♣①,②는 겉보기에는 다른 연산처럼 보이지만 연산하는 결과는 동일
②는 ①을 줄여표기한 것이다.(내용 동일)
+=, -=, *=, /= 위와 같은 식으로 사용
2.치환(대입) 연산자(Assignment operator)
대입 : =
♧ int num;
num = 10;
♣진행방향 : 오른쪽에서 왼쪽 (num에 10을 대입)
♧ int num;
num = 10;
♣진행방향 : 오른쪽에서 왼쪽 (num에 10을 대입)
3.증감 연산자(Increment&Decrement operator)
증가 : ++ (1증가)
감소 : -- (1감소)
♧ int num=10;
printf("%d\n",num); 10이 출력
printf("%d\n",num++); ++이 뒤에 붙을경우 효과는 다음줄부터 유효, 따라서 10
printf("%d\n",num); 윗줄의 ++영향으로 11출력
printf("%d\n",++num); ++이 앞에 붙을경우 해당 줄에서 유효, 따라서 12
출력 : 10
10
11
12
감소 : -- (1감소)
♧ int num=10;
printf("%d\n",num); 10이 출력
printf("%d\n",num++); ++이 뒤에 붙을경우 효과는 다음줄부터 유효, 따라서 10
printf("%d\n",num); 윗줄의 ++영향으로 11출력
printf("%d\n",++num); ++이 앞에 붙을경우 해당 줄에서 유효, 따라서 12
출력 : 10
10
11
12
4.관계 연산자(Relation & Equailty operator)
관계 연산자 : <, >, <= (수학에서 ≤의미), >= (수학에서 ≥의미), ==
※C에서는 ==는 수학에서 '같을때'의미이며, =는 '대입'을 의미한다.
관계연산자는 for, while, if~else if 등과같은 조건문에서 사용한다.
※C에서는 ==는 수학에서 '같을때'의미이며, =는 '대입'을 의미한다.
관계연산자는 for, while, if~else if 등과같은 조건문에서 사용한다.
5.논리 연산자
논리 연산자 : &&(And), ||(Or), !(Reversal)
♧int num = 10;
if(num != 1) num은 1과 같지(==) 않기(!=)때문에 참
{
①은 ++num으로 11이되고 10이 아니고 &&연산자임으로 ②를 수행하지 않고 if문을 나온다.
③에서 ++num으로 12가되고 10이아니기에 거짓이지만 ||연사자임으로 ④를 수행하여 11이된다.
하지만 11은 10이 아님으로 거짓으로 else if문을 나온다.
그리하여 마지막 printf문을 수행하여 num : 11이 출력된다.
♧위 소스에서 첫번째 if문에서 num != 1은 !(Reversal)을 이용해 !(num ==1) 으로 표현가능하다.
num은 1과 같지않아 거짓이지만 !를 이용하여 거짓으로 반전시키면 참이된다.
♧int num = 10;
if(num != 1) num은 1과 같지(==) 않기(!=)때문에 참
{
printf("True!\n"); 출력!
}
① ②
if(++num==10 && --num == 10) &&(And)는 ①에서 같지않다면 조건문에서 나온다.(&&는 ①, ② 둘다 참이여야 참이
{ 이기)
① ②
if(++num==10 && --num == 10) &&(And)는 ①에서 같지않다면 조건문에서 나온다.(&&는 ①, ② 둘다 참이여야 참이
{ 이기)
printf("num : %d\n",num);
} ③ ④
else if(++num == 10 || --num == 10) 반면에 ||(Or)은 ③이 거짓이다면 ④를 수행한다. 만약 ③ 참이라면 바로
{ 아래 블록({})을 실행한다.
해설 : 처음 if문에서 num은 1이 아니기에 참임으로 True!를 출력한다.else if(++num == 10 || --num == 10) 반면에 ||(Or)은 ③이 거짓이다면 ④를 수행한다. 만약 ③ 참이라면 바로
{ 아래 블록({})을 실행한다.
printf("num : %d\n",num);
}
printf("num : %d\n",num);
출력 : True!
num : 11
printf("num : %d\n",num);
출력 : True!
num : 11
①은 ++num으로 11이되고 10이 아니고 &&연산자임으로 ②를 수행하지 않고 if문을 나온다.
③에서 ++num으로 12가되고 10이아니기에 거짓이지만 ||연사자임으로 ④를 수행하여 11이된다.
하지만 11은 10이 아님으로 거짓으로 else if문을 나온다.
그리하여 마지막 printf문을 수행하여 num : 11이 출력된다.
♧위 소스에서 첫번째 if문에서 num != 1은 !(Reversal)을 이용해 !(num ==1) 으로 표현가능하다.
num은 1과 같지않아 거짓이지만 !를 이용하여 거짓으로 반전시키면 참이된다.
6.기타 연산자
피연산자의 크기를 알려주는 연산자 : sizeof
캐스트 연산자 : (Type)
♧char name[10];
double ang = 12.795138462;
printf("sizeof : %d * 10 = %d\n",sizeof(char),sizeof(name)); char의 크기는 1, name의크기는 1byte(char형)*10
printf("cast : %d\n",(int)ang); double형을 int형으로 강제형변환 시켜서 소수점이 없어지고 12만 남게 된다.
출력 : sizeof : 1 * 10 = 10
cast : 12
캐스트 연산자 : (Type)
♧char name[10];
double ang = 12.795138462;
printf("sizeof : %d * 10 = %d\n",sizeof(char),sizeof(name)); char의 크기는 1, name의크기는 1byte(char형)*10
printf("cast : %d\n",(int)ang); double형을 int형으로 강제형변환 시켜서 소수점이 없어지고 12만 남게 된다.
출력 : sizeof : 1 * 10 = 10
cast : 12
'Programming > C' 카테고리의 다른 글
C - 기초 문법, 구성요소 (0) | 2010.08.11 |
---|---|
C - 루프 (0) | 2010.04.20 |
C - 변수와 상수 (0) | 2010.03.24 |
C - 주석 (0) | 2010.03.22 |
C - 기본구조 (0) | 2010.03.22 |