목록C (24)
일
C보다 Java에 더 집중하기로 함
07 기본형 이제까지 int와 float이라는 C언어의 기본(내장)형basic type을 사용해왔음. 7단원부터는 그 이외의 기본형을 배울 것임. 간단히 소개하자면 정수형, 소수형, 문자형, 형변환, 형정의를 배우게 될 것임. 7.1 정수형 정수형은 유부호signed와 무부호unsigned 두 가지로 나뉨. 유부호 정수의 값이 0 또는 양수라면, 해당 정수의 맨 좌측 비트(부호 비트sign bit)는 0임. 유부호 정수의 값이 음수라면 맨 좌측 비트는 1임. 기본적으로 C에서 정수형 변수는 유부호이고, 맨 좌측 비트는 부호 비트임. 컴파일러에게 무부호 정수형이라고 지시하고 싶으면 unsigned 로 선언하면 됨. 부호 비트가 없는 무부호 정수는 맨 좌측 비트도 숫자를 표시하는 비트가 됨. 무부호 숫자는 ..
6.5 null문 구문은 무형null의 형태를 띨 수 있음. 즉 세미콜론을 제외하고 아무 기호도 없는 구문임. 예를 들어 아래의 코드를 보면 i = 0; ; j = 1; 이 줄에는 3개의 구문이 있음. i 할당문, null 구문, j 할당문. 어디서 많이 본 모양같지 않음? 맞음. 본문이 비어있는 루프에 null문이 쓰임. 예를 들어 6.4에서 배웠던 소수 찾기 루프를 다시 보면 for (d = 2; d < n; d++) { if ( n % d == 0) { break; } } 여기서 n % d == 0 조건문을 제어식으로 옮기면 아래와 같이 루프 본문이 비게 되는데 for (d = 2; d < n && n % d != 0; d++) { /* 비어있는 루프의 본문 */; } null문을 for문 바로 밑..
6.4 루프에서 벗어나기 프로그래밍을 하다 보면 루프를 중간에 종료시켜야 할 때가 있음. 또는 종료 지점이 여러개인 반복문을 짜야 할 때도 있음. 두 경우 다 break 문을 통해 만족시킬 수 있음. 그래서 break문을 먼저 배운 후에 continue문과 goto문을 배울 것임. break문 자연수 n이 소수인지 판별하는 프로그램을 작성한다 치자. 일단 for문을 통해 n을 2에서 n-1 사이의 숫자들로 나누는 코드를 작성하는 것임. 여기서 나눗수가 발견되면 바로 반복문을 중단해야 함. 루프가 종료된 후 if문을 통해 중도 종료됐는지(n이 합성수) 아닌지(n이 소수) 판별 가능함. 예제 ↓ for (d = 2; d < n; ++d) { if (n % d == 0) { break; } } if (d < ..
6.3 for문 사실상 for문이 루프의 상당 부분을 차지함. 특히 숫자를 세야 하는 변수가 있을 때 아주 유용한 반복문임. for문은 아래와 같은 구조를 가짐. for ( expr1 ; expr2 ; expr3 ) statement 예제를 들어 설명하자면 for (i = 10; i > 0; --i) { printf("T 빼기 %d, 세는 중\n", i); } 예제의 for문이 실행되면 변수 i는 10으로 초기화되고, i > 0인지 판별함. 10 > 0 이므로 T 빼기 %d, 세는 중 메시지가 출력되고, i는 감소함. 그 다음 다시 i > 0 을 판별하고, i는 10부터 1까지 지속되므로 루프 본문은 총 10번 실행됨. 몇가지 특수한 경우를 제외하고 while문은 for문으로 대체할 수 있음. 예를 들어..
6.2 do 문 do문은 while문을 얘기할 때 떼놓을 수 없음. 둘은 사실상 동일함. 차이점은 제어식 판별 시기임. do문의 일반형은 아래와 같음. do statement while ( expression ) ; while문처럼 표현식으로 본문이 이루어져 있고, 괄호로 제어식을 감싸야 함. do문이 실행되면, 일단 루프 본문이 실행되고 그 후에 제어식이 평가됨. 표현식이 0이 아닌 값을 가지면 루프 본문은 재실행되고 표현식도 재평가됨. 루프 본문 실행 이후 제어식의 값이 0이라면 do문은 종료됨. while문에서 만들었던 카운트다운 예제를 do문을 통해서도 만들 수 있음. i = 10; do { printf("T 빼기ㅣ %d. 세는 중\n", i); --i; } while (i > 0); 위 do 문..
06 루프 루프loop란 구문(루프 본문loop body)을 반복해서 실행하는 구문임. C의 모든 루프는 제어식controlling expression을 필요로 함. 루프 본문이 실행될 때마다 (루프의 한 반복iteration) 제어식이 평가됨. 만약 제어식이 참, 즉 0이 아닌 값을 갖는다면 루프는 계속 실행됨. C의 반복문은 저번에 말했듯 while문, do문, for문이 있음. 6단원에서 배울 것임. while문은 루프 본문 이전에 제어식이 평가되는 루프에 사용함. do문은 루프 본문이 실행된 다음에 제어식이 평가되는 루프에 사용함. for문은 루프가 특정 변수를 증감시킬 때 사용함. 루프의 접속 및 탈출에 사용되는 기능들은 break문, continue문, goto문이 있음. break문은 루프에..
Q: C언어 책들마다 복합문에서 들여쓰기하는 방식이 다르던데 뭐가 제일 좋은 방식인가? A: 그냥 취향 차이. 하나의 방식을 택했을 경우 그대로 쓰기만 하면 됨. Q: 만약 i가 int형 변수이고 f가 float형 변수일 때, 조건식 (i > 0 ? i : f)는 무슨 형식인가? A: 조건식에서 int형 변수와 float형 변수가 동시에 사용되면 조건식은 float형임. 만약 i > 0이 참이라면 조건식의 값은 float형으로 형변환된 i의 값임. Q: switch문이 "대부분의 경우 이런 구조"라고 했는데, 다른 구조도 있는가? A: 있음. 예를 들어 case 란 말 없이도 부호를 사용할 수 있음. Q: switch문을 들여쓰는 방법 중 제일 좋은 것은? A: 크게 두 가지가 있음. 첫번째는 구문을 c..