본문 바로가기

전체 글

(38)
scanf함수 이야기 입력의 형식 입력의 장소 위의 두 가지 정보가 전달되어야 scanf 함수를 호출할 수 있다. %d : 10진수 정수의 형태로 데이터를 입력 받는다 %o : 8진수 양의 정수의 형태로 데이터를 입력 받는다 %x : 16진수 양의 정수 형태로 데이터를 입력 받는다 printf 함수에서는 서식문자 %f, %e, %g의 의미가 각각 달랐다.(잘 모른다) 그러나 scanf함수에서는 모두 float형 데이터를 입력받겠다는 의미를 지닌다. + float형보다 바이트 크기가 큰 실수 자료형은 double, 더 크면 long double. %lf : double : %f에 l(소문자 엘)이 추가된 형태 %Lf : long double : %f에 L이 추가된 형태 + %lf는 printf함수의 서식문자와 연관성을 찾기 어..
printf함수: 서식 문자를 정돈 및 정렬하여 출력하기 서식문자에는 출력의 필드 폭을 지정하는 옵션을 추가할 수 있다. 아래의 예시를 통해 쉽게 이해할 수 있다. %8d : 필드 폭을 8칸 확보하고, 오른쪽 정렬해서 출력한다. %-8d : 필드 폭을 8칸 확보하고, 왼쪽 정렬해서 출력한다. (+)부호: 오른쪽 정렬 (-)부호: 왼쪽 정렬 서식문자 d의 계수: 폭의 칸 수 필드 폭의 저정과 정렬의 기준 변경은 유용하게 사용되는 옵션이니 기억하고 활용하길 바란다고 한다. ---------------------------------------------------------------------------- #include int main(void) { printf("%-8s %14s %5s \n", "이 름", "전공학과", "학년"); printf("%-8s ..
자료형의 변환 1. 대입연산의 전달과정에서 발생하는 자동적인 형 변환 대입 연산자의 왼편과 오른편에 존재하는 두 자료형이 일치하지 않는 경우, 왼쪽의 피연산자를 대상으로 형 변환이 자동으로 일어난다. 저장소의 자료형에 맞춰서 형 변환이 얼어나야 값의 저장이 가능하기에 그러하다. ex. double num1 = 245; // int형 정수 245를 double형으로 자동 형 변환 2. 피연산자의 자료형 불일치로 발생하는 자동 형 변환 피연산자의 자료형이 일치하지 않아서 발생하는 자동 형 변환은 데이터의 손실을 최소화하는 방향으로 진행된다. int > long > long long > float > double > long double ex. double num1 = 5.15 + 19; 위 예에서는 실수 5.15와 정수 ..
선언하는 자료형에 따라 상수의 자료형도 결정되는가? 대입 연산자의 왼편에 있는 자료형에 따라 상수의 자료형이 결정되는 것은 아니다. 다만, 대입 연산자의 오른편에 선언된 상수의 자료형에 어울리게 변수의 자료형을 선언했을 뿐이다. char ch = 'A'; 위와 같이 선언한다면 char형으로 표현된다고 생각할 것이다. 하지만 위의 문장은 컴파일러에 의해 다음과 같이 변한다. char ch = 65; 65는 정수이므로 4바이트 크기의 int형으로 표현되어야 한다. ------------------------------------------------------------------------------ #include int main(void) { char ch = 'A'; printf("literal int size: %d \n", sizeof(7)); p..
정수형 데이터를 n비트 오른쪽으로 shift 주어진 정수형 데이터(num)를 n비트 오른쪽으로 circular shift하는 코드를 작성하시오. 이때, 출력은 2진수로 하시오. - 입력은 scanf 사용 - 입력된 (원본)데이터와 쉬프트된 (결과)데이터를 2진수로 각각 출력 #include void ppp(int); int main(void) { int num; int shift; int i; unsigned int check = 1; scanf_s("%d %d", &num, &shift); ppp(num); for (i = 0; i = 0) { if ((num & check) == 0) { num = num >> 1; } else { num = num >> 1; num = num | 0x80000000; } } else { if ((num & c..
16진수 입력을 10진수로 출력하는 코드 작성 16진수를 입력받아 10진수로 출력하는 코드를 작성하시오 ex. 12B 입력 시 299 출력 - 입력은 getchar 사용할 것 - 입력의 끝은 '\n' - 배열이 아닌 단순변수를 사용하여 해결할 것 - 한 자리씩 10진수로 변환한 후에 누적된 결과를 출력할 것 - 출력에는 printf를 사용 ------------------------------------------------------------------------------------------------------------------------- 예제코드) #include #include // exit()함수 사용을 위해 int main(void) { // 변수 선언부 while ((c = getchar()) != '\n') { if (c >..
2진수 출력 코드 실습 주어진 정수형 데이터의 메모리상의 표현(2진수)을 출력하는 코드를 작성하시오 ex) 12 입력 -> 0000 0000 0000 0000 0000 0000 0000 1100 출력 - 입력에는 scanf 사용 - 주어진 정수형 데이터의 비트별 내용을 출력하는 것에 중점 - bitwise 연산자를 사용할 것 ------------------------------------------------------------------------------------------------------------------------- #include int main(void) { unsigned int check = 0x80000000; int num, i; int result; // int num_in; // scanf..
헷갈릴 수 있는 자료형의 변환 ------------------------------------------------------------------------------------------------------------------------------ #include int main(void) { char x; int y; char z; x = '2'; y = 0; z = x + y; printf("char z를 퍼센트c로 표현했을 때 : %c\n", z); // 출력값: 2 / 속성은 문자임(Char) printf("char z를 퍼센트d로 표현했을 때 : %d\n", z); // 출력값: 50 / 2에 대응하는 아스키코드 출력 } -----------------------------------------------------..