일지

Day 14

joo_coding 2025. 3. 10. 10:24

ㅇ실수

0과 1사이에는 수가 무한한데 float와 double은 소수점 n자리 까지만 표현하기 때문에

그 뒷자리 숫자는 오류가 날 수있다는 특징이 있다.

 

ㅇ묵시적 형변환

 

ㅇ명시적 형변환

int num1 = 1

int num2 = 3

 

double result01 = num1 / num2; >>> 0.00000000 나옴

double result01 = (double)num1 / num2; >>> 0.25000000 나옴

                               ㄴ실수화 시켜준다.

더블과 인트가 만나면 더블이 된다.

왜냐면 정보를 최대한 덜 버리려는 기조가 있기 때문.

 

ㅇsizeof 연산자

크기 측정

파이썬 len의 어려운 버전이라고 생각하면 편함

 

< switch~case문 >

점수 입력하면 몇등급인지 출력하기

int score;
printf("점수를 입력하세요: ");
scanf("%d", &score);

switch (score)
{
case 100:
case 99:
case 98:
case 97:
case 96:
printf("A"); //100~96
break;

case 95:
case 94:
case 93:
case 92:
case 91:
printf("B");//95~91
break;
 
case 90:
case 89:
case 88:
case 87:
case 86:
printf("C");//90~86
break;

case 85:
case 84:
case 83:
case 82:
case 81:
printf("D");//85~81
break;

case 80:
case 79:
case 78:
case 77:
case 76:
printf("E");//80~76
break;

default:
printf("F");
break;
}

매우 비효율적이다.

이걸 if문으로 바꾸면?

 

int score;
printf("점수를 입력하세요: ");
scanf("%d", &score);

if (96<= score && score <=100) // 96<= score <=100 이라고하면 안됨
{ // (score >= 96) 쓰면 && 안써도됨
printf("A");
}

else if (91<= score && score <= 95)
{

printf("B");
}

else if (86<= score && score <=90)
{

printf("C");
}

else if (81<= score && score <=85)
{

printf("D");
}

else if (76<= score && score <= 80)
{

printf("E");
}

else
{
printf("F");
}
 

return 0;
}

조건식을 96<= score <=100 이라고하면 안됨.

이거는 파이썬에서만 되는거임.

c언어에서는 논리연산자 사용 해야함.

 

< for문 >

// 1~10 출력 + 역순
for (int i=10; i>0; i--){
printf("%d ", i);
}

printf("\n");
 
for (int j=1; j<11; j++){
printf("%d ", j);
}

return 0;
}