공부/C programming

4. 연산자

natom_ 2016. 3. 22. 14:12
반응형

1. 대입연산자 

(기호) = 

(형식) 변수명 = 수식, 값



2. 산술연산자



3. 복합대입연산자(산술연산자, 대입연산자)

(1) 표 4-3 복합대입연산자종류정리

 복합 대입 연산자

의미 

 a += b

a = a + b 

 a -= b

a = a - b 

 a *= b

a = a * b 

 a /= b

a = a / b 

 a %= b

a = a % b 

 a &= b

a = a & b 

 a |= b

a = a | b 

 a ^= b

a = a ^ b 

 a <<= b

a = a << b 

 a >>= b

a = a >> b 


(2) 프로그램 4-3소스코드 결과 주석설명




4. 관계연산자

(1) 관계 연산자의 결과 값은 논리 값이 '참' 또는 '거짓'이다.

(2) 4-4 소스코드 주석 결과




5. 논리연산자

(1) 표 4-5

 x

x && y 

x || y 

!x 

거짓 

거짓 

거짓 

거짓 

거짓 

참 

거짓 

참 

참 

참 

거짓 

거짓 

참 

거짓 

참 

참 

참 

거짓 


(2) 4-5 소스코드 주석 결과




6.논리식의 단축평가

y = 10 인 이유

: 첫 번째 수식 x == 2의 결과 값 7은 논리 값 참에 해당하므로 뒤 수식의 연산 결과에 관계없이 전체 연산의 결과는 참이다.

따라서 뒤의 수식 y += 1 을 더이상 평가하지 않는다.

7행의 수식 y += 1은 단축평가되어 수행하지 않았으므로 y는 초깃값 10을 유지한다.



7. 조건연산자

(1) 형식

조건식? 수식1 : 수식2 

조건식이 참일 때 수식 1 실행, 거짓일 때 수식 2 실행


(2) 예제 프로그램4-7 소스코드 실행결과



8. 증감연산자

(1) 형식 표4-6

 종류

증감 연산자 

연산 결과 

전위형 

++x

 --x 

x값이 1 증가한 후, 증가한 값으로 연산을 수행한다.

x값이 1 감소한 후, 감소한 값으로 연산을 수행한다. 

후위형 

x++

 x-- 

현재의 x값이 연산에 사용된 후, 1 증가한다.

현재의 x값이 연산에 사용된 후, 1 감소한다. 

(2)소스코드 4-9 주석

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
    
    int x=1, y=2, z=3;
    
    x= ++* 5;
    y= y++ * 5;
    z= 5 - --z;
    
    printf("x = %d\n",x);
    //1. x=x+1
    //2. x=2*5
    
    printf("y = %d\n",y);
    //1. y=y*5
    //2. y=y+1
    
    printf("z = %d\n",z);
    //1.z=z-1
    //2.z=5-z
    
    return 0;
}
cs



9. 비트연산자

(설명)

비트 논리 연산자 종류로는 and (&),  or(|),  xor(^), not(~) 연산이 있고,

비트 이동 연산자 종류에는 >>,<< 가 있다.

비트를 이동할 때 쉬프트가 발생힌다.

비트 단위로 연산을 수행하며 2진수로 각 자리마다 연산을 수행한다.


왼쪽으로 n 비트 이동 할 때 피연산자 * 2ⁿ 이 되는것을 확인 할 수 있다.

오른쪽으로 n 비트 이동 할 대는 피연산자 / 2ⁿ 이 되는 것을 확인 할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<stdlib.h>
 
int main(int argc, char *argv[])
{
    int x,y;
    
    printf("정수 입력 : ");
    scanf("%d",&x);
    
    printf("이동 할 비트의 크기 입력 : ");
    scanf("%d",&y);
    
    printf("%d >> %d = %d\n",x,y,x>>y);
    printf("%d << %d = %d\n",x,y,x<<y);
     
}
cs



10. 형변환

- 자동 형 변환 연산은 컴파일러가 자동으로 처리하고, 강제 형 변환은 프로그래머가 형 변환 연산자를 사용하여 처리한다.


(1) 자동형변환

 형 넓힘 변환

 작은 표현 범위의 자료형이 큰 표현 범위의 자료형으로 변환

 형 좁힘 변환

 큰 표현 변위의 자료형이 작은 표현 범위의 자료형으로 변환


(2) 강제형변환


(3) 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
    
    char ch ='A';
    int x = 10,y = 4, sum;
    double pi = 3.14, avg;
    
    sum = ch + 2;
    //sum 변수 (4) = char 변수(1) 
    //컴파일러가 내부적으로 자동 형 넓힘 발생  
    printf("sum = %d\n", sum);        //정수형으로 출력 
    printf("sum = %c\n", sum);         //문자형으로 출력 
    
    sum = pi;
    //자동 형 좁힘 변환
    //sum(4) = pi(8) 
    printf("sum = %d\n", sum); 
    
    
    printf("정수간 x/y = %d\n", x/y);        //10/4
    printf("실수간 x/y = %lf\n", x/y);        //강제형변환
    
    sum = (double)x/(double)y;                //강제형변환호 자동형좁힘변환  
    printf("잘못된 sum = %d\n",sum);
    
    avg=(double)x/y;                        //강제형변환과 자동형넓힘변환 
    printf("정확한 avg = %lf\n",avg);
    
    avg=(double)(x/y);                        //강제형변환 
    printf("잘못된 avg = %lf\n",avg);
    
    
    return 0;
}
cs





반응형

'공부 > C programming' 카테고리의 다른 글

6. 전처리기  (0) 2016.04.15
5. 제어문  (0) 2016.03.29
정리하기  (0) 2016.03.20
실습 정리하기!  (0) 2016.03.18
실습  (0) 2016.03.16