336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념

숫자나 변수 앞에 붙을수 있으며 수학에서 말하는 음의수와 양의 수의 개념과 동일하다


백문의 불여 일타! ㅎㅎㅎ


소스 코드 정리하면서 주석고 함께!!!


소스코드 : main.c


#include <stdio.h>


#define PLUS +

#define MINUS -


int main(void)

{

int Value_1 = 0;

int Value_2 = 0;


int Result_1 = 0;

int Result_2 = 0;


Value_1 = 165;

Value_2 = -58;


Result_1 = MINUS(Value_1) PLUS Value_2; // 첫번째 붙은 MINUS는 부호 연산자가 됩니다. 두번째 PLUS는 산술 연산자 입니다.

Result_2 = PLUS(Value_1) MINUS Value_2; // 첫번째 붙은 PLUS는 부호 연산자가 됩니다. 두번째 MINUS는 산순 연산자 입니다.


// Result_1 = -(165) + (-58)

// Result_2 = +165 - (-58)


printf("Result_1 : %d\n", Result_1);

printf("Result_2 : %d\n", Result_2);


return 0;

}


결과


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 :

1. 수학적 부등기호를 사용합니다. = 

2. 우측(오른쪽) 내용이 좌측(왼쪽) 으로 복사됩니다.

example)

왼쪽 변수 = 오른쪽 변수;



대입 연산자를 활용할 수 있는 소스 코드를 만들어 보도록하겠습니다.


소스코드 : main.c


#include<stdio.h>


int main(void)

{

int L_Value; // Left Value 왼쪽 변수

int R_Value; // Right Value 오른쪽 변수

int example;


example = R_Value = L_Value = 0; //

printf("모든 변수를 0으로 초기화 해줍니다.\n");

/*

값이 대입되는 순서

1. L_Value 에 0이 대입 됩니다.

2. R_Value 에 L_Value가 되입니다.

3. Swap 에 R_Value 가 됩니다.

결론은 모두 0이 되는 군요

*/

L_Value = 88;

printf("L_Value에 %d 값을 넣어줍니다.\n", L_Value);


printf("R_Value에 L_Value값을 넣어줘서 %d 이 됩니다.\n", R_Value = L_Value);



return 0;

}


결과




336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이번 시간에는 그동안 사용한 상수들에 대해서 모두 사용하면서 다시한번 복습겸 해서 예제에 모두 포함 시켜볼 생각입니다.


더불어 #define 전처리기에 대해서 설명을 조금해볼려고 합니다.


#define HUNDRED 100



#은 프로그램이 본격적으로 만드어지기 전에 처리 할 내용을 말합니다. 즉 #include 와 같은 효과를 가지고 있습니다.


define 은 사전적으로 규정짓다 정의를 내리다와 같이 사전의 말을 그대로 사용합니다.


HUNDRED 는 정의를 내리는 대상이 됩니다. 100은 대상의 값이 됩니다.


한줄로 풀이해보면


본 프로그램이 처리되기전에 HUNDRED 를 숫자 100으로 정의하겠다.


이제 본격적으로 코드를 작성해보도록하겠습니다.


소스코드 : main.c


#include <stdio.h>


#define A 65


#define HUNDREAD 100


#define PI 3.14159


#define KOREA "대한민국"


int main (void)

{

printf("%c 의 아스키 코드값 : %d입니다.\n", A, A); // 상당히 가독성이 좋지요?^^

printf("99 다음 숫자는 %d 입니다.\n",HUNDREAD);

printf("원주율은 %f 입니다.\n", PI);

printf("우리나라는 %s 입니다\n.", KOREA);


return 0;

}


결과


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

전시간에 말했듯이 특별함이 없이 그냥 소스코드로 설명하고 넘어가려합니다. 이거하고 앞으로 하나 더 남았습니다.


소스 코드 : main.c


#include <stdio.h>


int main(void)

{

const int TRUE = 1;

const int FALSE = 0;


int nResult1 = 123 > 0;

int nResult2 = 123 < 0;


if(nResult1 == TRUE) // 가독성이 높아보이는 효과!!!!

{

printf("nResult1 값 : 123은 0보다 크다.\n");

}

else if(nResult1 == FALSE)

{

printf("nResult1 값 : 123은 0보다 작다.\n");

}


if(nResult2 == TRUE)

{

printf("nResult2 값 : 123은 0보다 작다.\n");

}

else if(nResult2 == FALSE)

{

printf("nResult2 값 : 123은 0보다 크다.\n");

}


return 0;

}


결과


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

앞서 예고 했듯이 말도 안되는 300제의 내용중 일부를 정리하려다~ 정수처럼 실제 필드에서 사용되는 예를 들어 볼까 합니다.


코드 : main.c


#include <stdio.h>


int main (void)

{

const float PI = 3.141592f; // 소수점 7자리 정밀도 보장


printf("float 으로 표현된 원주율 : %f\n", PI);



return 0;

}


결과



다소 성의 없는 코드와 내용이 허접한 글이였습니다... 다음 시간과 그다음 시간까지는 이상태가 계속 지속될것같으니 부드럽게 


보는 눈이 필요할 것 같습니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이번 시간은 int 앞에 const 붙인 소스 코드 입니다. char 로 동일합니다. 다음 장에서는 의미 없이 ㅡㅡ 


실수형 앞에 const 를 붙일것 같은 불길한 느낌이 들었는대 아니나 다를까 책을 넘기니 그렇게 되어 있습니다.


"어쩌지" 하고 고민하다 결론을 내렸습니다. const int 만의 특별한 것이 있나를.... 특별한것이 앞에 말한것과 동일해서.. 


답답하지만 실제 사용되는 예를 들어 사용해보도록 하겠습니다.



소스 코드 : main.c


#include<stdio.h>


int main(void)

{

const int HUNDREAD = 100;


printf("숫자 백의 표기는 10진수로 %d 입니다.\n", HUNDREAD ); // 유난히 가독성이 빛나보입니다. ~ 뜻과 값이 같기때문에 

                                                                              //바뀔 이유가 없습니다 ... 실제사용된 예시 입니다.


return 0;

}


결과


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

300제 지금 보니 내용이 조금 이상하다고 생각되고 오해의 소지가 있는 부분이 있어서 저의 애드립 그리고 설명으로


이번장을 작성 하려합니다.


우선 const 란 키워드를 이해해야합니다.


변수 앞에 const 키워드가 붙기 이전에


변수 선언과 초기화에 대해서 잠시 설명 하겠습니다. 


// example 1

int test;


test = 1;


// example 2

int test = 2;


예제1 번과 예제 2번의 차이점에 대해서 설명해보도록하겠습니다.


예제 1번은 변수를 선언하고 다음줄에서 변수에 값을 대입하는 구조 이고


예제 2번은 변수를 선언하고 바로 값을 대입하는 구조입니다.


이런 구조적 차이는 메모리에 기록하는 순서에 차이를 가지고있습니다.


예제 1번은 운영체제가 메모리에 변수의 공간을 확보한뒤 다음 명령 줄을 읽어들여 초기화 하는 방법입니다.


그렇다면 예제 1번에 있는 값은 무엇을까요? 초기화 되지 않은 쓰레기 값이 존재 합니다. 이부분은 나중에 메모리 구조와


프로그램과 변수의 생명주기에 대해서 설명할때 디테일하게 설명하도록할게요


예제 2번은 운영체제가 메모리에 변수 공간을 확보함과 동시에 값을 초기화 해줍니다.


프로그램을 하다보면 예제1번 과같이 사용할수도 있고 예제 2번과도 사용할수 있습니다. 저의 개인적인 판단으로는


2번 예제 방법을 권장합니다. 왜냐면 나중에 초기화를 깜빡하고 나두었을 시 프로그램이 오작동 하는 실수를 범할수


있기 때문에 한번 값을 초기화 해주고 시작하는것이 바람직하다고 생각합니다.


자그럼 const 설명으로 돌아가서 ~


const는 변수를 상수화 시키는 키워드입니다. 변수가 변수가 아니게 되는 것이지요.!!!


이것은 const 키워를 선언함과 동시에 바로 초기화 해줘야한다는 말이 되기도 하고 선언과동시에 값을 초기화 하지 않을때 


에러 메시지가 나옵니다. 그렇지 않는 컴파일러도 있습니다. 그렇지 않을경우 사용했을때 error C4700 으로 에러가


발생됩니다.


그리고 이 값은 프로그램이 램에서 해제 되기 직전까지 변하지 않고 존재 하게됩니다.


만약 cosnt 키워드가 붙은 변수의 값을 변경 하면 error C2166 메시지가 발생합니다. 


그리니 사용할때 조금만 신경써주면 에러가 발생하지 않습니다. 참 쉽죠?!!!^^


소스코드 : main.c

#include <stdio.h>


int main (void)

{

const char Test1 = 1;


//const char Test2; //error 나중에 앞에 주석을 제거 해서 확인해보세요 그리고 아래 printf("%d\n",Test2); 도 같이 풀어 주셔야 합니다.

//Test1 = 2; //error 이것 또한 앞에 주석을 제거 해서 확인해보세요


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

//printf("%d\n",Test2);

return 0;

}


결과



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

지금은 이것을 설명하기 너무 어려운 개념같은데 여튼 쉽게 쉽게 말하자면... ㅠㅠ 어려워 포인터를 말해줘야하는데... 이거 예제 자체가 잘


못된것 같아... 여튼 배열과 포인터에 맛보기를 시작할까 합니다.


이번 장은 소스 코드를  작성하며 주석으로 설명을 해볼까 합니다.


그리고 다소 생소 하겠지만 char* 의 형태에 주목해주세요


구성이 변수 char 와 *(asterisk) 로 구성 되어 있습니다.


그래서 이것은 캐릭터 형태의 주소를 담는 변수 입니다. 주소에대한 설명은.... 나중에 휙휙


자그럼 소스 코드를 적으며 설명 간단히 해보도록 하겠습니다.


소스 코드 : main.c


#include <stdio.h>


int main(void)

{

char* pStr1 = "동해물과 백두산이 마르고 닮도록"; // 이것은 문자열을 메모리 공간 어딘가에 저장하고 그공간의 첫 번째 주소를 pStr1 에 기록하는 방식입니다.

char szStr2[]="하느님이 보우하사 우리나라 만세"; // 이것은 배열로 만들어라는 명령입니다. 데이터를 만들고 그공간 만큼을 배열에게 넘겨주는 것입니다.

printf("%s \n",pStr1);

printf("%s \n",szStr2);


return 0;

}


결과


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 : 

1. 논리연산이란 크다, 작다, 같다 의 연산 결과 입니다.

2. 정수형값 형태로 1과 혹은 0만이 존재 합니다.

3. 참인경우 1, 거짓인 경우0 이 됩니다.


소스 코드

#include<stdio.h>


int main (void)

{

int nValue_1 = 12;

int nValue_2 = -3;


int nBooleanLogic_1 = 0;

int nBooleanLogic_2 = 0;

int nBooleanLogic_3 = 0;

int nBooleanLogic_4 = 0;

int nBooleanLogic_5 = 0;


nBooleanLogic_1 = nValue_1 > nValue_2; // 변수1은 변수2 보다 크다

nBooleanLogic_2 = nValue_1 < nValue_2; // 변수1은 변수2 보다 작다

nBooleanLogic_3 = nValue_1 >= nValue_2;// 변수1은 변수2 보다 크거나 같다

nBooleanLogic_4 = nValue_1 <= nValue_2;// 변수1은 변수2 보다 작거나 같다

nBooleanLogic_5 = nValue_1 == nValue_2;// 변수1은 변수2 와 같다


printf("변수1: %d \n변수2: %d \n",nValue_1, nValue_2);


if(nBooleanLogic_1)

{

printf("변수1은 변수2 보다 크다 , 참\n");

}

else

{

printf("변수1은 변수2 보다 크다 , 거짓\n");

}


if(nBooleanLogic_2)

{

printf("변수1은 변수2 보다 작다 , 참\n");

}

else

{

printf("변수1은 변수2 보다 작다 , 거짓\n");

}


if(nBooleanLogic_3)

{

printf("변수1은 변수2 보다 크거나 같다 , 참\n");

}

else

{

printf("변수1은 변수2 보다 크거나 같다 , 거짓\n");

}


if(nBooleanLogic_4)

{

printf("변수1은 변수2 보다 작거나 같다 , 참\n");

}

else

{

printf("변수1은 변수2 보다 작거나 같다 , 거짓\n");

}


if(nBooleanLogic_5)

{

printf("변수1은 변수2 보다 같다 , 참\n");

}

else

{

printf("변수1은 변수2 보다 같다 , 거짓\n");

}





return 0;

}


결과


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 : 

1. 소수 점을 기록하기위한 소수점 전용 변수

2. 정밀도를 가지고있다.(float 소수 7자리, double 소수 14자리혹은 그 이상)


#include<stdio.h>

int main(void)

{

float test1;

double test2;

double test3;


test1 = 3.141592;

test2 = 1234567890;

test3 = 'A';


printf("실수형 변수 test1 의 값 : %e \n", test1);

printf("실수형 변수 test2 의 값 : %E \n", test2);

printf("실수형 변수 test3 의 값 : %e \n", test3);



return 0;

}


결과




200제 이상의 단락에서 printf 함수를 설명하겠는데... 그래서 설명할것은 간단하게 하자면


%d 는 정수

%e 는 실수 출력(무조건 실수 출력)

%f 도 실수 출력이지만 무조건 적인 실수 출력이 아닙니다.

+ Recent posts