목록C (12)
코딩 노트
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bMBDVl/btq4kGDncy2/9pMAJILlkifQXbEf21g9Yk/img.png)
1. 정수 기반의 입력형태 정의하기 scanf 함수는 printf 함수의 상대적인 기능을 지닌다. printf 함수는 출력에 사용되지만, scanf 함수는 입력에 사용된다. 2. 실수 기반의 입력형태 정의하기 서식문자 %lf는 printf 함수의 서식문자에서 그 연관성을 찾기 어렵기 때문에 헷갈리기 쉽다. 따라서 printf 함수의 서식문자와는 별도로 이해하고 있어야 한다. float, double, long double의 데이터 출력에 사용되는 서식문자는 각각 %f, %f, %Lf이다. float, double, long double의 데이터 입력에 사용되는 서식문자는 각각 %f, %lf, %Lf이다. 그리고 문자열의 출력에 사용되는 서식문자 %s는 문자열의 입력에도 사용된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eymyZe/btq4jO9yCSk/RemvFkb4x28N4vRMTuTqBk/img.png)
printf함수는 문자열을 출력하는 함수이다. C언어는 큰 따옴표를 사용해서 문자열을 표현하는데, 문자열에 \n이 삽입이 되어있는 경우가 있다. 이를 '특수문자'라고 한다. 문자열에 포함이 되는 특수문자는 작은 따옴표로 묶어서 독립된 문자상수로도 존재할 수 있다. 그렇다면 '특수문자', 혹은 '이스케이프 시퀀스(escape sequence)'라 불리는 문자들이 필요한 이유는 무엇일까? 이러한 유형의 문제 해결을 위해 특수문자가 존재하는 것이다. 1. printf 함수의 서식지정 printf의 f는 formatted(서식이 지정된)을 의미한다. 따라서 printf라는 함수의 이름에는 '서식이 지정된 형태의 출력'이라는 뜻이 담겨져 있다. 이 말은 '출력 양식이 만들어진 상태에서 출력을 진행한다'는 뜻이다...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bsDn2U/btq4diLagpW/qfKXlTcDq0H1o2PtVAM4B0/img.png)
자료형의 변환이란 데이터의 표현방식을 바꾸는 것이다. ex) char형으로 표현되어 있는 데이터의 표현방식을 int형으로 바꾸거나, int형을 double형으로 바꾸는 것 자료형의 변환은 크게 두 종류로 나뉘는데, 자동 형 변환(묵시적 형 변환)과 강제 형 변환(명시적 형 변환)이다. 그 이름이 의미하듯이 '자동 형 변환'은 자동으로 발생하는 형 변환이고, '강제 형 변환'은 프로그래머가 형 변환을 명시해서 강제로 변환이 일어나게 하는 것이다. 1. 대입연산의 전달과정에서 발생하는 자동 형 변환 대입 연산자의 왼편과 오른편에 존재하는 두 피연산자의 자료형이 일치하지 않으면, 왼편에 있는 피연산자를 대상으로 형 변환이 자동으로 일어난다. (저장소의 자료형에 맞춰서 형 변환이 일어나야 값의 저장이 가능하므로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/yqoJC/btq4f1glWlq/RCcaWetAfNhyt3eLRzpZk1/img.png)
변수의 상대적 개념인 상수에 대해서 알아보자. 상수는 크게 이름이 있는 상수와 이름이 없는 상수로 나뉘며, 상수 역시 앞서 설명한 int, double과 같은 자료형을 근거로 표현이 된다. 그리고 이러한 사실을 이해하는 것은 매우 중요하다. 1. 이름을 지니지 않은 리터럴 (Literal) 상수 상수란, 그 이름이 의미하듯이 변경이 불가능한 데이터를 뜻한다. 위 코드에는 30과 40의 합의 결과를 변수 num에 저장하는 문장이 존재한다. 그렇다면 대입연산과 덧셈연산중에 무엇이 우선이겠는가? 당연이 30 + 40 덧셈연산이 우선이다. 즉, 덧셈이 우선 진행되고, 그 결과로 얻어진 값으로 변수 num을 초기화하게 된다. 그렇다는 것은 30+40의 연산을 CPU가 진행해야 한다는 뜻인데, 그러기 위해서는 30..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TYEtW/btq4bixOfm1/5tz7lnzoQdjh7qMDYzCksK/img.png)
1. 문자의 표현을 위한 약속! 아스키(ASCII) 코드! 숫자를 이용해서 문자를 표현하려면 숫자를 문자에 연결(mapping)시키는 것이 유일한 방법이다. C언어는 '미국 표준 협회'에 의해서 제정된 '아스키 코드'라는 표준을 선택해서 문자를 표현한다. 그리고 이러한 아스키코드는 알파벳과 일부 특수문자를 포함하여 총 128개의 문자로 이뤄져 있다. 참고로 몇몇 아스키 코드와 아스키 코드에 할당된 '아스키 코드 값'을 정리하면 다음과 같다. 2. 문자는 이렇게 표현되는 거구나! 컴퓨터는 문자를 숫자로 표현한다는 사실도 알았고, 숫자로 표현하기 위해서 정의된 '아스키 코드'의 존재도 알게 되었다. 그렇다면 실제 프로그램상에서 문자는 어떻게 표현이 될까? 이에 대한 이해를 위해서 다음 코드를 보자. int ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cbnWoH/btqZpfxqvbZ/i4Ro4xLTv41YMjceO0kG3K/img.png)
1. 자료형 자료형(data type)은 '데이터를 표현하는 방법'을 뜻함. int는 그러한 자료형의 일종, 이러한 자료형이 미리 정의 되어 있기에 우리는 자료형의 이름을 이용해서 쉽게 메모리 공간을 할당할 수 있는 것임. 2. 기본 자료형(기본적으로 제공되는 자료형)의 종류와 데이터의 표현 범위 자료형 char는 1바이트(8비트)이므로 나타낼 수 있는 데이터의 종류가 '2의 8승은 256', 256개임. 따라서 -128부터 +127까지 표현하도록 정의된 자료형임. C의 표준을 정하는 ANSI에서는 다음과 같은 정도로만 자료형의 크기를 표준화하고 있음. "short와 int는 최소 2바이트이되, int는 short와 크기가 같거나 더 커야한다." 즉, 자료형 별 크기를 정확히 제한하고 있지 않음. 따라서..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cO4UMo/btqXJVWrRP8/Kn0m4NEKukqR14hMpJTSV1/img.png)
1. 비트 연산자 표 2. & 연산자: 비트단위 AND & 연산은 두 개의 비트가 모두 1일때 1을 반환하는 연산 3. | 연산자: 비트단위 OR | 연산은 두 개의 비트 중 하나라도 1이면 1을 반환하는 연산 4. ^ 연산자: 비트단위 XOR ^ 연산은 두 개의 비트가 서로 다른 경우에 1을 반환하는 연산 5. ~ 연산자: 비트단위 NOT ~ 연산은 비트를 0에서 1로, 1에서 0으로 반전시키기 때문에 보수연산이라고도 함. (MSB도 반전되어 부호마저 바뀜...) 6. 연산자: 비트의 오른쪽 이동(Shift) >> 연산자와 > num2 연산을 하였을 때, num2의 크기만큼 num1의 비트 열이 오른쪽으로 이동한 결과가 반환 됨. 물론 num1이 양수라면(MSB가 0), 이동으로 인해서 밀려나는 오른쪽..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/89wXz/btqXLe2c6cJ/GZnrvUlnEDE1sF5aK4kSz1/img.png)
1. 정수 정수의 양의 값 C언어는 보통 하나의 정수를 4바이트(32비트)로 표현함. 정수의 가장 왼쪽에 존재하는 비트는 '부호비트', 양수라면 0, 음수라면 1을 저장하여 부호를 표시함 밑 그림의 경우, 나머지 일곱 비트가 0000001이므로 크기는 1이고 MSB가 0이므로 값은 +1임. 정수의 음의 값 음의 정수를 표현할 때에는 2의 보수를 취해야 함. 2의 보수법 1. 각각 비트 별로 1의 보수를 취하기(1은 0으로. 0은 1로 체인지) 2. 그리고 나서 1을 더하기 3. 그렇게 해서 얻게 된 값 11111011이 바로 -5 짜잔 2. 실수 컴퓨터는 이러한 형식의 식을 미리 정의 해 놓고, 메모리에 할당된 데이터의 일부 비트는 m의 값을 정하는데, 또 일부 비트는 e의 값을 정하는데 사용하는 방식으..