블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday
     

    ⇒ sizeof() - 연산자이다.

    ⇒ 단항 연산자, 다항 연산자

       ex) 1-4에서 (-)기호는 다항 연산자로 연산(뺄셈)의 의미이며,

           -5에서 (-)기호는 단항 연산자로 부호(음수)의 의미.


    - 연산자 표

    분류

    연산자

    연산순서

    우선순위

    괄호 및 포인트 연산자

    () [] ->

    좌→우

    높음

    단항 연산자

    ! ~ ++ -- +(단항) -(단항) *&(type) sizeof

    우→좌

    산술 승제 연산자

    *(곱셈) / %

    좌→우

    |

    산술 가감 연산자

    + -

    좌→우

    |

    비트 쉬프트 연산자

    << >>

    좌→우

    |

    비교 연산자

    <  <=  >  >=  ==  !=

    좌→우

    |

    비트 논리 연산자

    &(비트AND)  ^  |

    좌→우

    |

    논리 연산자

    &&  ||

    좌→우

    |

    조건 연산자

    ? :

    우→좌

    |

    부가 연산자

    = += -= *= /= %= ^= |= <<= >>=

    우→좌

    순서 연산자

    ,

    좌→우

    낮음


    ※ CPU는 정수 연산에 최적화 되어 있다.

    ⇒ 그러므로 5/3의 계산을 하면 1(몫)이 나오며, 소수점 이하는 계산하지 않는다.

     5%3의 계산을 하면 2(나머지), 역시 정수기반의 계산으로 소수점 이하는 계산하지 않는다.


    //실수를 정수형에 넣었을 때의 결과.

    #include<stdio.h>

    int main()

    {

            int A=4.9;

            int B=4.1;

            int C=12.89486486;

            printf("%d\n",A); //A는 int형이므로 소수점은 버리고 4의 값을 갖는다.

            printf("%d\n",B); //B는 int형이므로 소수점은 버리고 4의 값을 갖는다.

            printf("%d\n",C); //C는 int형이므로 소수점은 버리고 12의 값을 갖는다.


            return 0;

    }

    - 형 변환 (type cast)

    - 형 동등: 대입연산자에서 형은 동등함을 기준으로 하고 있다.

    int A=4;

    float B=4.3;

    int C=A+B; // 4.0 + 4.3 =8.3이 되지만 → int 형이 되면서 8이 저장된다.


    ※ 컴파일러는 CPU가 덧셈이 가장 빠르기 때문에 3*6 같은 경우 3을 6번 더하는 것으로 바꿔버린다. 이것이 곱셈을 수행하는 것 보다 CPU의 입장에서는 훨씬 빠르다.

    ※ CPU는 정수는 반올림 하지 않지만, 소수는 반올림을 한다. 그 이유는 정수는 속도를 우선시하기 위해 최적화 되어 있지만, 실수의 경우에는 정밀한 계산이 필요하기 때문이다.


    //실수와 정수간의 형변환 확인

    #include<stdio.h>

    int main()

    {

            float A=7;

                    float B=3;

            float C=7/3; // float을 선언했지만 7과 3으로 값을 주어 이것은 정수형 값이 되어 나누기 결과가 2가 되어 버린다. 그래서 결과가 2를 소수점 이하로 표시해서 2.000000 값이 나온다.

            float D=7/3.0; // 3.0 이 실수 입력되어 나머지 수(7)까지 실수형으로 바뀐다.

            float E=7.0/3.0;

            float G=5/3.0;


            printf("%f\n",A/B); // 결과 값 2.333333 

            printf("%f\n",C); // 결과 값 2.000000

            printf("%f\n",D); // 결과 값 2.333333

            printf("%f\n",E); // 결과 값 2.333333

            printf("%f\n",G); // 결과 값 1.666667


            return 0;

    }




    - 비교 연산자

    연산자

    의미

    수식 예

    수식의 의미

    <

    보다 작다

    a < b

    a가 b보다 작으면 참이다.

    >

    보다 크다

    a > b

    a가 b보다 크면 참이다.

    <=

    작거나 같다

    a <= b

    a가 b보다 작거나 같으면 참이다.

    >=

    크거나 같다

    a >= b

    a가 b보다 크거나 같으면 참이다.

    ==

    같다

    a == b

    a와 b가 같으면 참이다.

    !=

    같지 않다

    a != b

    a와 b가 같지 않으면 참이다.


    ⇒ 참이면 1, 거짓이면 0으로 인식된다. 그리고 논리 값 1과 0도


    #include <stdio.h>

    int main()

    {

            printf("%d\n",5<6);  // 참이므로 1 출력

            printf("%d\n",5>6);  // 거짓이므로 0 출력

            printf("%d\n",5>=6);  // 거짓이므로 0 출력

            printf("%d\n",5<=6);  // 참이므로 1 출력

            printf("%d\n",5==6);  // 거짓이므로 0 출력

            printf("%d\n",5!=6);  // 참이므로 1 출력


            return 0;


    }


    - 논리 연산자

    연산자

    의미

    수식 예

    수식의 의미

    &&

    논리 AND

    a && b

    a와 b가 모두 참이면 참이 된다.

    ||

    논리 OR

    a||b

    a와 b 중에서 적어도 한쪽이 참이면 참이 된다.

    !

    NOT

    !a

    a가 참이면 거짓이 되고, a가 거짓이면 참이 된다.


    ※ 0 이외의 모든 수는 참(1)이다.

    ※ ! -100은 거짓(0)


    #include<stdio.h>

    int main()

    {

            int A; /* A를 int 형으로 선언, 메모리에 A라는 이름을 가진 int형 4byte 공간이 생긴다. 이때, 4byte 공간은 임의의 쓰레기 값이 채워져 있다.*/

            A=0; // A를 0으로 선언, 메모리의 A의 공간에 쓰레기 값 대신 0이 들어간다.

            scanf("%d", &A); /* 10진수 정수형으로 입력받은 수가 A의 주소 값에 들어간다. 즉, 메모리의 A의 공간에 입력받은 수가 0 대신 들어간다.*/

            ++A; /* 메모리에 저장된 A값을 불러와 1을 더하고 더해진 값은 다시 메모리로 들어간다. */

            printf("%d\n",A); // 메모리 A에 있는 값을 10진수 정수형으로 출력한다.

            A++; /* 메모리에 저장된 A값을 불러와 1을 더하고 더한 값이 다시 메모리로 들어간다. */

            printf("%d\n",A); // 메모리 A에 있는 값을 10진수 정수형으로 출력한다.

            return 0; // 함수를 0으로 반환하고 프로그램을 종료한다.

    }

    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함