while 사용법


C에서는 여러가지 반복문 ( while, for )과 제어문 (if, switch)가 있다.

그 중 특정한 조건을 만족하면 계속 반복 수행되는 while 사용법에 알아보도록 하겠다.



while


while의 사용법을 간단히 표현 하면 다음과 같다.

 while(조건)

 {

       반복 실행 문

 }


위에서 조건이 참이면 계속 반복 실행문이 수행 된다.

다음 while문을 사용한 예를 보도록 한다.

#include <stdio.h>


int main(int argc, char *argv[]) 

{

int i = 0;

while( i < 5 )

{

printf("i[%d]\n",i);

i++;

}

return 0;

}


예를 보면 while 안에 조건이 i 가 5보다 작으면 계속 i를 출력한다.

처음엔 i가 0이며 한번 출력 후 i가 증감한다.

그러므로 i를 0~4까지 출력 후 while문이 종료 되게 된다.






do~while


do~while의 사용법을 간단히 표현 하면 다음과 같다.

do

 {

       반복 실행 문

 }while(조건)


while문은 조건이 만족하지 않으면 한번도 수행되지 않고 넘어가지만 do~while은 무조건 한번은 수행하게 된다.

다음은 while에 조건을 잘 못 넣으면 1번도 수행을 못하는 예이다.

#include <stdio.h>


int main(int argc, char *argv[]) 

{

int i = 5;

while( i < 5 )

{

printf("i[%d]\n",i);

i++;

}

return 0;

}


예를 보면 while 안에 조건이 i 가 5보다 작으면 계속 i를 출력한다.

그러나 i가 5이기 때문에 while을 한번도 수행 안하고 프로그램이 종료가 된다.


다음은 조건 값을 그대로 두고 do~while로 바꿔 보겠다.

#include <stdio.h>


int main(int argc, char *argv[]) 

{

int i = 5;

do

{

printf("i[%d]\n",i);

i++;

}while(i<5);

return 0;

}


예를 보면 한 번은 무조건 실행 되기 때문에 i값 5를 출력 후 while 조건에 만족 하지 않아 

while문을 빠져 나온 후 종료가 된다.





반응형

'프로그램 > C' 카테고리의 다른 글

[C] if ~ else 제어문 사용법  (0) 2017.03.15
[C] for 반복문 사용법  (0) 2017.03.14
[C] 비트(bit) 단위 연산  (0) 2017.03.12
[C] 입력 함수 scanf 사용법  (0) 2017.03.10
[C] 출력 함수 printf 사용법  (0) 2017.03.09

비트 단위 연산


C에서 비트 연산 방법에 대해 알아보도록 하겠다.

이에 앞서 비트에 대한 이해가 필요한데 비트(Bit)란

컴퓨터의 전기 신호로 0,1 두 가지 수 밖에 표현을 하지

못한다 

bit는 2진수 값으로 컴퓨터가 나타내는 데이터의 최소

단위 값이라 생각하면된다.

1bit가 8개 모여 1byte가 되며 1byte는 2의 8제곱승이며 256개의

값을 표현 할 수 있다.



비트 연산자의 종류


비트 연산자의 종류는 아래와 같이 6가지 종류가 있다.

 연산자

 설명

&

  비트 단위 AND ex) 1 & 1 -> 1

|

  비트 단위 OR   ex) 1| 0 -> 1

  비트 단위 XOR ex) 1 ^ 1 -> 0    

  비트 단위 NOT   ex) ~0 -> 1

 <<

  왼쪽으로 이동   ex) a << 2

 >>

  오른쪽으로 이동 ex) b >>3 




[ & (AND) 연산자 ]

연산

결과 

0 & 0

 0 

 0 & 1 

0

1 & 0

0

1 & 1

1



     0001 0011

AND  0001 0010

 =   0001 0010



[ | (OR) 연산자 ]

연산

결과 

0 | 0

 0 

 0 | 1 

1

1 | 0

1

1 | 1

1


     0001 0011

OR   0001 0010

 =   0001 0011



[ ^ (XOR) 연산자 ]

연산

결과 

0 & 0

 0 

 0 & 1 

0

1 & 0

0

1 & 1

1



     0001 0011

 ^   0001 0010

 =   0000 0001



[ ~ (NOT) 연산자 ]

연산

결과 

0 & 0

 0 

 0 & 1 

0


 ~   0001 0010

 =   1110 1101




[ << (shift) 연산자 ]

연산

결과 

8 << 2

32 


     0000 0100

 =   0001 0000

 
8을 2진 수로 나타 내면 위와 같이 0000 0100 이다. 여기서 왼쪽으로 쉬프트 2를 했다는 것은

0000 0100 이 왼쪽으로 두 번 간다는 얘기 이다.


0000 0100   <- 앞에 숫자 00을 두개 삭제 한다.

00 0100      <- 맨 뒤에 숫자 두 개 빠진 결과에 

0001 0000   <- 00을 뒤에 붙인다.







[ >> (shift) 연산자 ]

연산

결과 

8 >> 2

 1 


     0000 0100

 =   0000 0001

 
8을 2진 수로 나타 내면 위와 같이 0000 0100 이다. 여기서 오른쪽으로 쉬프트 2를 했다는 것은

0000 0100 이 오른쪽으로 두 번 간다는 얘기 이다.


0000 0100   <- 뒤에 숫자 00을 두개 삭제 한다.

0000 01      <- 맨 뒤에 숫자 두 개 빠진 결과에 

0000 0001   <- 00을 앞에 붙인다.






반응형

'프로그램 > C' 카테고리의 다른 글

[C] for 반복문 사용법  (0) 2017.03.14
[C] while, do~while 반목문 사용법  (0) 2017.03.13
[C] 입력 함수 scanf 사용법  (0) 2017.03.10
[C] 출력 함수 printf 사용법  (0) 2017.03.09
[C] 증감 연산자  (0) 2017.03.08

출력 함수


C언어 제공하는 입력 함수에 대해 알아보겠다.

콘솔화면에 입력에 대한 함수는 scanf이다.

콘솔화면은 윈도우 프로그램 실행 창에 cmd라고 쳤을 때 나오는 command 창이다.

함수에 대한 사용법에 대해 알아보자


scanf 사용법


scanf를 사용하기 위해서는 우선 사용자가 입력할 데이터 크기 및 종류를 파악하여 알맞은 변수를 선언해 둬야 한다.

예를들어 숫자를 입력 받으면 int를 사용하거나 문자열 20문자까지 받기 위해 char a[21] 과 같은 선언이 필요하다.

예제와 함께 설명해보도록 하겠다.

int selNum = 0;

scanf( "%d", &selNum );


위의 예제는 사용자에게 데이터를 입력 받아 int형인 selNum 변수에 담는 역활을 한다.
사용자가 문자를 입력하면 엉뚱한 값이 변수에 담겨질 수 있다.

다음은 int형 문자열등 다양한 데이터를 입력받는 예제이다.

#include <stdio.h>

#include <stdlib.h>


int main(int argc, char *argv[]) 

{

int selNum = 0;

int strContent[128] = {0,};

printf("숫자를 입력하시오\n");

scanf( "%d", &selNum );

printf(" 입력한 숫자는  [%d]\n", selNum);

printf("문자를 입력하시오(127byte)\n");

scanf( "%s", &strContent );

printf(" 입력한 문자는  [%s]\n", strContent);

return 0;

}


입력할 때 127byte를 넘기면 데이터가 깨지거나 알 수 없는 문자가 입력 될 수 있으니 127바이트에 맞춰서 입력하길 바랍다.


scanf 로 동시에 2개이상 입력 받기




다음과 같이 동시에 2개의 입력 값을 받을 수 있다.


scanf( "%d %s", &selNum, &strContent );


입력 할 때 데이터의 경계를 공백(스페이스바, tab키, enter) 으로 구분한다.

그러니 숫자를 입력 후 공백(스페이스바, tab키, enter)을 입력 후 문자를 입력 하면 된다.


다음 예제를 통해 확인해보자.


#include <stdio.h>

#include <stdlib.h>


int main(int argc, char *argv[]) 

{

int selNum = 0;

int strContent[128] = {0,};

printf("숫자와 문자를 입력하시오\n");

scanf( "%d %s", &selNum, &strContent );

printf(" 입력한 숫자는  [%d]\n", selNum);

printf(" 입력한 문자는  [%s]\n", strContent);

return 0;

}




scanf 사용시 변수 앞에 &는 무엇인가?


scanf를 사용시 아래 처럼 변수 앞에 &를 넣는데 


scanf( "%d %s", &selNum, &strContent );


결론 부터 말하면 &은 변수의 주소이다.

주소라 하면 변수가 하나 할당 되면 메모리 어딘가에 할당이 되는데 해당 메모리의 위치를 표시한다고 생각 하면 된다.

우선 이정도만 알아두고 다음에 포인트 설명 때 자세히 하도록 하겠다.


반응형

'프로그램 > C' 카테고리의 다른 글

[C] while, do~while 반목문 사용법  (0) 2017.03.13
[C] 비트(bit) 단위 연산  (0) 2017.03.12
[C] 출력 함수 printf 사용법  (0) 2017.03.09
[C] 증감 연산자  (0) 2017.03.08
[C] 연산자  (0) 2017.03.07

출력 함수


C언어 제공하는 입출력 함수에 대해 알아보겠다.

콘솔화면에 출력에 대한 함수는 printf이며 입력에 대한 함수는 scanf 이다.

콘솔화면은 윈도우 프로그램 실행 창에 cmd라고 쳤을 때 나오는 command 창이다.

각 함수에 대한 사용법에 대해 알아보자


printf 사용법


printf를 사용하여 사용자 문자열, 변수 값 출력, 개행처리등 다양한 방법이 가능하다.

예제와 함께 설명해보도록 하겠다.

printf("문자열 출력");
printf("문자열 출력2");


위에 실행 결과는 "문자열 출력문자열 출력2"가 출력 된다.
여기서 개행을 넣어서 보기 좋게 예제를 만들어 보도록 하겠다.

printf("문자열 출력\n");
printf("문자열 출력2\n");


위의 함수를 실행해보면 한줄씩 띄어서 출력 되는 것을 확인 할 수 있다. 
\n은 개행을 표시하는 특수 문자이다.

printf에서 변수를 출력 하기 위해서 퍼센트(%d)를 사용하는데 이런 문자를 두고 서식 문자(conversion specifier)라 한다.
아래 예제를 보고 변수 출력을 하는 방법을 확인해 보자


printf("%d\n",15);


위의 함수를 실행해보면 "15" 라고 출력 되는데 %d는 printf의 두 번째 인자 값으로 치환된다고 보면 된다.
설명이 부족한 것 같아 자세히 설명 하자면 printf는 다음과 같은 형식을 갖고 있다. 
printf(인자 1, 인자2, 인자 3.... ) 이렇게 인자 값을 여러개 넣을 수 있는데 첫 번째 인자 값은 문자열, 서식문자, 개행 문자등을 넣으며
첫 번째 서식 문자 <- 인자2
두 번째 서식 문자 <- 인자3 ... 식으로 치환 되어 출력 된다.



서식 문자 종류


서식 문자는 정수만 출력하는 것이 아니라 다양한 변수를 출력 할 수 있다. 

 서식 문자

 설명  

 %s

 문자열

 %c

 문자 

 %d

 부호 있는 정수 

 %u

 부호 없는 정수 

 %f

 실수 

 %0.2f

 소수점 2자리 까지 나오는 실수 

 %X

 16진수 대문자 

 %x

 16진수 소문자 

 %02X 2자리 16진수 표시, 앞자리는 0으로 채움 



#include <stdio.h>

#include <stdlib.h>


int main(int argc, char *argv[]) 

{

printf(" 문자열[%s] \n","Hello World");

printf(" 문자1개[%c] \n",'H');

printf(" 부호있는정수[%d] \n",-3);

printf(" 부호없는정수[%u] \n",3);

printf(" 실수[%f] \n",2.1234);

printf(" 실수 소수 2자리만[%0.2f] \n",2.1234);

printf(" 16진수 대문자[%X] \n",'H');

printf(" 16진수 소문자[%x] \n",'i');

printf(" 16진수 2자리만 [%02X] \n",255);

return 0;

}



반응형

'프로그램 > C' 카테고리의 다른 글

[C] 비트(bit) 단위 연산  (0) 2017.03.12
[C] 입력 함수 scanf 사용법  (0) 2017.03.10
[C] 증감 연산자  (0) 2017.03.08
[C] 연산자  (0) 2017.03.07
[C] 함수  (0) 2017.03.05

+ Recent posts