반응형
sizeof 연산자 관련
#include <stdio.h> void main() { char c; int n; long p; float f; double d; printf("char형 변수 사이즈 : %d \n", sizeof(c)); printf("int형 변수 사이즈 : %d \n", sizeof(n)); printf("long형 변수 사이즈 : %d \n", sizeof(p)); printf("float형 변수 사이즈 : %d \n", sizeof(f)); printf("double형 변수 사이즈 : %d \n", sizeof(double)); printf("bool형 변수 사이즈 : %d \n", sizeof(bool)); /* sizeof()연산자는 기본형의 크기를 구할때 보다는 배열이나 구조체, 사용자 정의형 등 메모리 크기가 가변적인 타입에 매우 유용하게 쓰인다. sizeof연산자는 변수명이나 타입 이름을 피연산자로 받는 단항연산자이다. */ }
cast 연산자 관련
#include <stdio.h> void main() { float a, b; int sum1, sum2; float sum3; printf("첫번째 실수 입력 :"); scanf_s("%f", &a); printf("두번째 실수 입력 :"); scanf_s("%f", &b); sum1 = (int)(a + b); //실수끼리 더한 후 정수로 변환 sum2 = (int)a + (int)b; //정수로 변환한 후 더함 sum3 = a + b; // 실제 실수합 printf("sum1 : %d \n", sum1); printf("sum2 : %d \n", sum2); printf("sum3 : %f \n", sum3); }
// 실수형을 정수형으로 변환하면 소수점 부분이 잘리므로 값이 달라진다.
나누기 연산관련 주의사항
#include <stdio.h> void main() { int a, b; float division1, division2; printf("첫번째 정수 입력 : "); scanf_s("%d", &a); printf("두번째 정수 입력 : "); scanf_s("%d", &b); division1 = (float)(a / b); // 실수형 변수에 정수값을 형변환하지 않고 집어넣을 경우 경고가 발생한다. division2 = (float)a / (float)b; printf("division1의 결과 : %f \n", division1); printf("division2의 결과 : %f \n", division2); //두수를 먼저 실수 변환하고 나눠야지만 정확한 실수값을 얻을 수 있다. }
//(나누기 연산시 제수가 0이면 런타임 에러가 나므로 항상 주의하자)
관계연산자 중첩시 주의사항
#include <stdio.h> void main() { int j; j = (1 < 0 < 2); printf("식 1 < 0 < 2가 참이면 1, 거짓이면 0 : %d \n", j); // a<b<c 형태로 관계연산자를 쓰면 a<b의 결과값(1이나 0)을 C랑 비교하기 때문에 잘못된 결과가 나온다. j = (1 < 0) && (0 < 2); printf("식 1 < 0 && 0 < 2가 참이면 1, 거짓이면 0 : %d \n", j); }
입력받은 영문자가 소문자인지 대문자인지 확인하는 코드
#include <stdio.h> void main() { char ch; int j; printf("영문자를 입력하세요 : "); scanf_s("%c", &ch); j = (ch >= 'a' && ch <= 'z'); //char형은 내부적으로 정수형의 일부로 문자마다 정수값이 지정되어 있다. //예를 들어 'A'는 65이고 'a'는 97, 'z'는 122이다. printf("%c는 소문자가 %s. \n", ch, (j != 0) ? "맞습니다." : "아닙니다"); }
윤년 계산법 코드
#include <stdio.h> void main() { int year, leap; printf("년도를 입력하세요 : "); scanf_s("%d", &year); leap = (year % 400 == 0) || (year % 100 != 0) && (year % 4 == 0) ? 29 : 28; printf("%d년은 2월달이 %d일까지 있습니다.", year, leap); }
// (year % 400 == 0) || (year % 100 != 0) && (year % 4 == 0) 이 조건이 참이면 윤년.
xor swap 코드
#include <stdio.h> void main() { int i = 000, j = 100; printf("i = %d, j = %d \n", i, j); printf("xor swap 알고리즘 사용후 \n"); i ^= j; j ^= i; i ^= j; // 이런식으로 xor연산을 세번 반복하면 두 수의 값이 바뀐다. printf("i = %d, j = %d \n", i, j); }
/*
xor swap 알고리즘은 신기하긴 하지만 메모리가 충분한 지금은 그리 큰 장점이 없다.
또한 두 변수가 같은 위치를 가르키고 있을 경우 그대로 두어야 하지만 두 값 모두 0으로 변경되어 버린다는 치명적인 단점이 있다.
*/
반응형