[2025.03.10] C언어 찍먹하기_2

2025. 3. 10. 15:04·C/본수업
목차
  1. [저번주 복습]
  2. [본수업]

[저번주 복습]

★ 변수

  • 정수형 : char형, int형, short형, long형 ==> unsigned도 있음!!
  • 실수형 : float형, double형 (double이 더 정확해요~ 기억하시죠?)
  • default는 signed임 ~~!
  • 리터럴 : 값 
    • ex) num = 1 ====> 리터럴 : 1

 

 

★ 상수

  • 상수는 변하면 안됨~ 고정된 수!
  • 앞에 const 써서 선언
    • ex) const num = 1;

 

[본수업]

★ 타입 변환 - 묵시적 타입 변환

  • 우선, 타입 변환이란? 어떤 자료형으로 선언된 변수를 다른 자료형으로 바꾸는 것!!
  • 묵시적 타입 변환 (= 묵시적 형 변환, 자동 타입 변환, 자동 형 변환, implicit type conversion)
    • 설명 : num01을 정수형으로 선언하고 실수로 초기화함. 따라서, num01을 출력해보면, 3.14의 소수점 부분은 짤리고, 정수 부분만 출력됨!! num02를 double형으로 선언하고, 정수로 초기화함. 따라서, num02를 출력해보면, 실수가 출력되는 것을 볼 수 있음. 이것은 정보를 최대한 버리지 않기 위해 실수로 자동 변환되는 것임. (정보 버리는거 굉장히 싫어함ㅎ)
    • 검색해보니까 자료형에도 우선순위가 있음!!!! double > float > unsigned int > long int > int > char
    • 마지막 printf() 문장 보면 같은 num02를 출력할 자료형으로 %d를 사용해봄. 이상한 값이 들어옴....
    • 이거가 자료형 우선순위 때문이라고 그러는데,,, 나는 맞는지는 잘 모르겠음,,, 더 공부가 필요할 듯
// 타입 변환 - 묵시적
#include <stdio.h>

int main()
{
    char ch = 200;
    int num01 = 3.14;
    double num02 = 5;  

    printf("   ch에 저장된 값은 %d입니다.\n", ch);
    printf("num01에 저장된 값은 %d입니다.\n", num01);
    printf("num02에 저장된 값은 %f입니다.\n", num02);
    printf("num02에 저장된 값은 %d입니다,\n", num02);

    return 0;
}

 

 

  • 묵시적 타입변환 예제
    • 설명 : 이것도 위에 예제랑 비슷하게 result01을 double형으로 선언하였기 때문에, 데이터 손실을 최소화하기 위해 5는 int(정수) 이지만, double형 데이터로 자동 타입 변환됨!!! 두번째 printf()문은 float형(5.0f)과 double형의 연산을 하는 것임. 이것도 데이터 최소화를 위해 float형이 double으로 자동 타입 변환되는 것임!!!! 
    • 데이터를 최소화하려면 큰(?) 데이터 타입을 쓰는게 맞는 거니까 위에서 말한 우선순위를 적용시키는게 맞는것 같기도함?!
    • 이거 이제 이해가 가버림..굿
// 타입변환 - 묵시적
#include <stdio.h>

int main()
{
    double result01 = 5 + 3.14;
    double result02 = 5.0f + 3.14;  

    printf("result01에 저장된 값은 %f입니다.\n", result01);
    printf("result02에 저장된 값은 %f입니다.\n", result02);

    return 0;
}

 

 

 

 

 

★ 타입 변환 - 명시적 타입 변환

  • 명시적 타입 변환 (= 명시적 형 변환, 강제 타입 변환, 강제 형 변환, explicit type conversion)
  • 사용자가 타입 캐스트(type cast) 연산자를 사용하여 강제적으로 수행하는 타입 변환
    • 설명 : 첫번째 printf() 문장에서 result01을 보면 num01과 num02는 정수형이고, 이를 계산하고 나온 값의 정수 부분만 result01에 저장되게 됨. 따라서, 0.000000이 출력됨. 두번째 printf() 문장에서 result02를 보면 num01을 강제로 정수에서 double형으로 바꿔줌. double형과 int형을 연산하면 연산 결과는 double형이 됨. 그래서 0.250000가 출력됨!!!
    • 나 이렇게 이해했는데, 이거 맞는겨????
// 타입 변환 - 명시적
#include <stdio.h>

int main()
{
    int num01 = 1;
    int num02 = 4;  

    double result01 = num01 / num02; // =>  계산하고 나온 정수부분만 result01에 저장됨. ==> 0이 출력됨
    double result02 = (double)num01 / num02;  // => int와 double을 게산하면 double이 되는 것을 이용하여 num01을 double로 바꿔주고 계산함.

    printf("result01에 저장된 값은 %f입니다.\n", result01);
    printf("result02에 저장된 값은 %f입니다.\n", result02);

    return 0;
}

 

 

===> int와 int를 계산하면 소수점 이하가 사라짐. ==> 명시적으로 타입 변환해줌.

float int랑 할때 int로 하고싶으면 ? => int로 받으면 소수점 버려줌.

 

공부할때 ~~~ 명시적 형 변환 & 묵시적 형 변환 검색해서 알아보세용!! 자료형 다룰때 원하는 값이 안나올 수 있음. 그 때 이게 문제일 수 있음. 그니까 알아둬랑~!~!~!~!~!~!~!

 

 

 

★ 연산자 - 산술 연산자

  • +, -, *, /, %
  • //(몫구하기)와 **(제곱)은 python에서는 있었지만, C에는 없음.
  • 우선순위 너무 많음 ==> 외우기 힘듦 ==> 괄호()를 써서 통제하세용

 

 

★ 연산자 - 증감 연산자

  • 헷갈리니까 후위연산자만 쓰시오!
  • int a = 0;
  • printf("%d", a++);
  • 실행결과 ==> a = 0
  • 전위를 쓰고싶으면 이렇게 쓰슈!! 보는 사람도 헷갈려유~
  • int a = 0;
  • a++;
  • printf("%d", a);
  • 실행결과 ==> a = 1

 

  • 이거 비트연산자에 나옴
  • 비트연산자 지금은 몰라도 됨!!! 이런 있구나~만 해유 (다행 다행 휴~)
  • 알아두면 .... 좋대유...... ㅎ......
  • XOR
  • 같으면 0
  • 1 1 => 0
  • 1 0 => 1
  • 0 1 => 1
  • 0 0 => 0

 

 

 

★ 연산자 - sizeof 연산자

  • 해당 자료형의 크기를 확인할 수 있음.
  • 피연산자의 크기를 바이트 단위로 반환
  • python의 len()의 어려운 버전....?

 

 

★ 조건문 - if문

  • 조건문의 소괄호()는 무조건 적어줘야 함!
if (조건식1)
{
    // 조건 만족 시 실행 문장
}
else if (조건식2)
{
    // 조건 만족 시 실행 문장
}
else
{
    // 위의 조건들이 모두 거짓일 때 실행 문장
}

 

 

  • if문 작성해보기 - 2개의 정수 큰 수 출력
// if문 작성해보기 - 2개의 정수 중 큰 수 출력
#include <stdio.h>

int main()
{
    int num_1 = 10, num_2 = 5;

    if (num_1 >= num_2)
    {
        printf("%d, %d 중 큰 수 = %d\n", num_1, num_2, num_1);
    }
    else
    {
        printf("%d, %d 중 큰 수 = %d\n", num_1, num_2, num_2);
    }

    return 0;
}

 

 

 

★ 조건문 - switch-case문

  • default 절은 조건 값이 위에 나열된 어떠한 case 절에도 해당하지 않을 때 실행됨.
  • break 키워드는 조건 값에 해당하는 case 절이나 default 절이 실행된 뒤에 전체 switch 문을 빠져나가게 해줌.
  • 만약에 break 키워드가 없다면, 조건에 해당하는 switch 문의 case 절 이후의 모든 case 절이 전부 실행됨.
  • 각 case 절 및 default 절은 반드시 break 키워드를 포함하고 있어야 함!
switch (조건 값) 
{
    case 값1:
        조건 값이 값1일 때 실행하고자 하는 명령문;
        break;
    case 값2:
        조건 값이 값2일 때 실행하고자 하는 명령문;
        break;
    ...
    default:
        조건 값이 어떠한 case 절에도 해당하지 않을 때 실행하고자 하는 명령문;
        break;
}

 

  • switch-case 예제
    • 정수를 0~100점을 score라는 변수에 초기화를 해주세요.
    • swithc-case문으로 A등급에서 F등급을 나눠주세요.
    • A는 100~96, B는 95~91, C는 90~86, D는 85~76, E는 75~66, F는 65~0
  • 아래 코드에서도 봤듯이,,, switch-case문은 굉~~~~장히 귀찮음,,,, 코드 작성하면서도 이게 맞나? 싶었음 ㅋㅋㅋ 
  • 그 아래 코드는 똑같은 프로그램인데, if문을 사용해서 작성한 것! 훨~~~씬 나음! 정말 훨~~~씬!
  • 범위 표현을 위해서는 if문을 쓰는 것이 좋다! 상황 하나씩을 비교하는 것은 switch-case가 좋을 수 있음.
// switch-case문 - 학점 나누기
#include <stdio.h>

int main()
{
    int score = 50;

    switch (score)
    {
        case 100:
        case 99:
        case 98:
        case 97:
        case 96:
            printf("A 학점입니다.\n");
            break;
        case 95:
        case 94:
        case 93:
        case 92:
        case 91:
            printf("B 학점입니다.\n");
            break;
        case 90:
        case 89:
        case 88:
        case 87:
        case 86:
            printf("C 학점입니다.\n");
            break;
        case 85:
        case 84:
        case 83:
        case 82:
        case 81:
        case 80:
        case 79:
        case 78:
        case 77:
        case 76:
            printf("D 학점입니다.\n");
            break;
        case 75:
        case 74:
        case 73:
        case 72:
        case 71:
        case 70:
        case 69:
        case 68:
        case 67:
        case 66:
            printf("E 학점입니다.\n");
            break;
        default:
            printf("F 학점입니다.\n");
            break;
    }

    return 0;
}
// if문 - 학점 나누기
#include <stdio.h>

int main()
{
    int score = 100;

    if (score >= 96 && score <= 100)
    {
        printf("A 학점입니다.\n");
    }
    else if (score >= 91)
    {
        printf("B 학점입니다.\n");
    }
    else if (score >= 86)
    {
        printf("C 학점입니다.\n");
    }

    else if (score >= 76)
    {
        printf("D 학점입니다.\n");
    }

    else if (score >= 66)
    {
        printf("E 학점입니다.\n");
    }
    else
    {
        printf("F 학점입니다.\n");
    }

    return 0;
}

 

 

 

★ 반복문 

  • while문을 사용하여 1 ~ 10 출력
    • 설명 : num = 1 부터 시작해서 10보다 작거나 같을 때까지 num을 출력하고 num을 1씩 증가시킴.
// while문 1~10 출력
#include <stdio.h>

int main()
{
    int num = 1;

    while(num <= 10)
    {
        printf("num : %d\n", num);
        num++;
    }
    return 0;
}

 

 

 

  • while문을 사용하여 10 ~ 1 출력
    • 설명 : num = 10 부터 시작해서 0보다 클 때까지 num을 출력하고 num을 1씩 감소시킴.
// while문 10~1 출력
#include <stdio.h>

int main()
{
    int num = 10;

    while(num > 0)
    {
        printf("num : %d\n", num);
        num--;
    }
    return 0;
}

 

 

 

  • for문을 사용하여 1 ~ 10 출력
    • 설명 : num = 1 부터 시작해서 10보다 작거나 같을 때까지 num을 출력하고 num을 1씩 증가시킴.
// for문 1~10 출력
#include <stdio.h>

int main()
{
    int num = 1;

    for (num ; num <= 10 ; num++)
    {
        printf("num : %d\n", num);
    }
    return 0;
}

 

 

 

  • for문을 사용하여 10 ~ 1 출력
    • 설명 : num = 10 부터 시작해서 0보다 클 때까지 num을 출력하고 num을 1씩 감소시킴.
// for문 10~1 출력
#include <stdio.h>

int main()
{
    int num = 10;

    for (num ; num > 0 ; num--)
    {
        printf("num : %d\n", num);
    }
    return 0;
}

 

 

 

 

'C > 본수업' 카테고리의 다른 글

[2025.03.10] Ch.03_데이터와 C  (0) 2025.03.10
[2025.03.10] Ch.02_C 첫걸음  (0) 2025.03.10
[2025.03.10] Ch.02_C 첫걸음_연습문제  (0) 2025.03.10
[2025.03.07] C언어 찍먹하기  (0) 2025.03.07
[2025.03.07] 컴퓨터 구조  (0) 2025.03.07
  1. [저번주 복습]
  2. [본수업]
'C/본수업' 카테고리의 다른 글
  • [2025.03.10] Ch.02_C 첫걸음
  • [2025.03.10] Ch.02_C 첫걸음_연습문제
  • [2025.03.07] C언어 찍먹하기
  • [2025.03.07] 컴퓨터 구조
polibo
polibo
Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
  • polibo
    Polibo와 개발 콩나무 키우기
    polibo
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • Python (23)
      • C (32)
        • 본수업 (19)
        • 예습 (7)
        • 개인프로젝트01 - 로또 (3)
        • 개인프로젝트02 - 복켓몬 키우기 (2)
        • 개인프로젝트03 - 김복천국 POS기 (1)
        • 팀프로젝트01 - 용사 복이의 대모험 RPG (0)
        • 팀프로젝트02 - 메일 프로그램 (0)
      • TCP_IP (0)
      • DB (1)
      • C++ (7)
        • 개인프로젝트01 - 숫자야구 (0)
      • QT (1)
        • 개인프로젝트01 - 숫자야구 (0)
        • 팀프로젝트01 - 키오스크 (1)
        • 팀프로젝트02 - 퐘퐘이 (0)
        • 팀프로젝트03 - 개발의 민족 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬조건문
    코딩
    c언어 scanf
    순서도
    for문
    파이썬예제
    if문
    c우선순위
    파이썬게임
    조건문
    반복문
    C
    파이썬 숫자야구
    문자열
    파이썬
    Python
    파이썬반복문
    else if
    c언어
    while문
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
polibo
[2025.03.10] C언어 찍먹하기_2

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.