017. 정수형 상수 이해하기(int)017. 정수형 상수 이해하기(int)

Posted at 2010. 11. 12. 02:09 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

#define HUNDRED_THOUSAND 100000

const int j = 200000;

main()
{
	HUNDRED_THOUSAND = 100000;	// 에러 발생
	j = 200000;					// 에러 발생

	printf( "정수형 상수 HUNDRED_THOUSAND의 값은 %d\n",
		HUNDRED_THOUSAND );
	printf( "정수형 상수 j의 값은 %d\n",j )
}

#define HUNDRED_THOUSAND 100000L
const int j = 200000UL;
//

016. 문자형 상수 이해하기(char)016. 문자형 상수 이해하기(char)

Posted at 2010. 11. 12. 02:06 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

#define HUNDRED 100

const char j = 10;

main()
{
	HUNDRED = 200;	// 에러 발생
	j = 200;		// 에러 발생

	printf( "문자형 상수 HUNDRED의 값은 %d\n",HUNDRED );
	printf( "문자형 상수 j의 값은 %d\n",j );
}
//

015. 문자열형 변수 이해하기(char*)015. 문자열형 변수 이해하기(char*)

Posted at 2010. 11. 12. 02:03 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

main()
{
	char str[] = "대한민국";
	char *j = "I love Korea";

	printf( "문자열형 변수 str의 값은 %s\n",str );
	printf( "문자열형 변수 j의 값은 %s\n",j );
}

이 부분은 특히 중요하다. char[]은 문자열 변수이고 char*는 문자열 상수이다.

전자는 변할 수 있고 후자는 변할 수 없다.

단지 메모리의 어딘가에 "I love Korea"를 저장하고 그곳의 번지수만 기억하고 있다.

또한 Asteris의 위치에 대해서도 언급해야 되며

문자열의 마지막은 NULL(0)임에 대해 언급하여야 한다.

NULL != '0'

'\0'

//

014. 논리형 변수 이해하기(bool)014. 논리형 변수 이해하기(bool)

Posted at 2010. 11. 12. 01:55 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

main()
{
	int b;
	int j;

	b = 10 > 5;
	j = 10 > 20;

	printf( "논리형 변수 b의 값은 %d\n", b );
	printf( "논리형 변수 j의 값은 %d\n", j );

	if( b )
	{
		printf( "10 > 5의 식은 참입니다.\n" );
	}
	else
	{
		printf( "10 > 5의 식은 거짓입니다.\n" );
	}

	if( j )
	{
		printf( "10 > 20의 식은 참입니다.\n" );
	}
	else
	{
		printf( "10 > 20의 식은 거짓입니다.\n" );
	}

	if( -1 )
	{
		printf( "-1은 참입니다.\n" );
	}
	else
	{
		printf( "-1은 거짓입니다.\n" );
	}
}

재미있는 부분이다. 참고로 C언어에는 논리형이 없다. 다만 참이면 1, 거짓이면 0을 가진다.

그런데 return에는 정상 종료를 의미할 때 return 0를 사용한다.

return의 경우 0이면 TRUE, 음수면 FALSE, 양수는 특정 상태를 의미한다.

strcmp를 생각해보면 된다.

//

013. 실수형 변수 이해하기(double)013. 실수형 변수 이해하기(double)

Posted at 2010. 11. 12. 01:47 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

main()
{
	float d;
	double d1;
	double d2;

	d = 3.141592;
	d1 = 1234567890;
	d2 = 'c';

	printf( "실수형 변수 d의 값은 %E\n",d );
	printf( "실수형 변수 d1의 값은 %E\n",d1 );
	printf( "실수형 변수 d2의 값은 %E\n",d2 );
}
//

012. 정수형 변수 이해하기(int)012. 정수형 변수 이해하기(int)

Posted at 2010. 11. 12. 01:45 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

main()
{
	int i;
	unsigned int j;
	int k;

	i = 2000000000;
	j = 4000000000;
	k = 'b';

	printf( "정수형 변수 i의 값은 %d\n", i );
	printf( "정수형 변수 j의 값은 %u\n", j );
	printf( "정수형 변수 k의 값은 %d\n", k );
}

다행히 011번 예제에서 다루었던 내용이 추가되어 있어서 좋다.

int형 변수 k에 문자를 대입하였다.

만약 저기서 Double Quotation으로 바꾸면 어떻게 될까?

결과는 다음과 같이 "정수형 변수 k의 값은 4282268"으로 출력되었다.

물론 컴파일할 때 경고도 발생하였다.

또 하나 알아야 될 것은 int형 앞에 생략된 것이 많다.

이는 영어와 같은 것 같다. 영어에서도 서로가 아는 것은 편의를 위해 생략된다.

특히 that과 같은 관계 대명사가 그렇다.

int형 앞에는 auto와 signed라는 키워드가 생략되었다. auto는 범위 지정자에 관한 것이고 signed은 음수의 표현 유무이다.

//

010. 문자형 변수 이해하기(char)010. 문자형 변수 이해하기(char)

Posted at 2010. 11. 12. 01:37 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

main()
{
	char ch;
	unsigned char j;
	char k;

	ch = 200;
	j = 200;
	k = 'a';

	printf( "문자형 변수 ch의 값은 %d\n",ch );
	printf( "문자형 변수 j의 값은 %d\n",j );
	printf( "문자형 변수 k의 값은 %d\n",k );
}

간단한 예제 처럼 보이지만 무척 중요하다.

지금까지 프로그래밍을 하면서 문자는 무조건 char형에 저장해야 된다고 생각했다.

하지만 문자를 int형에 저장할 수 있다.

결국 모든 자료형에는 숫자가 저장된다.

중요한 것은 자료형이 가지는 크기가 다르다는 것이다.

char형이 -128 ~ 127 까지인 이유는 ASCII 코드의 크기 때문이다.

이것이 중요하다. 즉 과거를 알아야 된다.

컴퓨터 통신에서 HDLC의 프레임을 이야기 할 때 워크스테이션과 단말기에 대한 이야기가 나온다.

즉 과거의 워크스테이션과 단말기들의 통신에서 부터 시작하였기 때문에 프레임의 구조에서 이야기가 나온다.

물론 ASCII 코드는 0에서 부터 127까지만 사용한다.

그럼 음수값을 받으면 어떻게 될까?

char ch = -10; // 아무 음수값이나 입력
printf("문자형 변수 ch의 값은 %c\n", ch);

결과는 "문자형 변수 ch의 값은 ?" 라고 출력되었다.

이 부분은 나도 한번 생각을 해보아야 겠다.

그리고 또 하나 중요한 것은

int k = 'a';
printf("숫자형 변수 k의 값은 %c\n", k);

위와 같이 사용할 수 있다는 것이다.
//

010. 컴파일 개념 배우기010. 컴파일 개념 배우기

Posted at 2010. 11. 12. 01:26 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

main()
{
	//int i;
	int hap = 0;

	for( i = 1; i <= 10; i = i + 1 )
	{
		hap = hap + i;
	}

	printf("1부터 10까지의 합 : %d", hap);
}
//

009. 주석 개념 배우기009. 주석 개념 배우기

Posted at 2010. 11. 12. 01:18 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

main()
{
	int i;			// 정수형 변수 i를 정의합니다.
	int hap = 0;	// 정수형 변수 hap을 정의하고, 0으로 초기화합니다.

	/*
	for 문은 다으처럼 실행됩니다.

	1. i에 1을 초기값으로 설정합니다.
	2. i가 10보다 작거나 같을 때까지만 순환문은 반복됩니다.
	3. 현재의 hap의 값과 i값을 더하여 hap에 대입합니다.
	4. i는 1씩 증가합니다.
	*/

	for( i = 1; i <= 10; i = i + 1 )
	{
		hap = hap + i;	//hap과 i를 더하여 hap에 대입합니다.
	}

	/* "1부터 10까지의 합 : 55"가 화면에 표시됩니다.*/
	printf("1부터 10까지의 합 : %d",hap);
}

Turbo-C 컴파일러에서는 더블 슬래시(//)를 사용할 수 없다고 한다.

//

008. 함수 개념 배우기008. 함수 개념 배우기

Posted at 2010. 11. 12. 01:15 | Posted in Computer/초보자를 위한 C 언어 300제
#include <stdio.h>

int hapf( int value );

main()
{
	printf("1부터   10까지의 합은 %d\n", hapf(10));
	printf("1부터  100까지의 합은 %d\n", hapf(100));
	printf("1부터 1000까지의 합은 %d\n", hapf(1000));
}

int hapf( int value )
{
	int i;
	int hap = 0;

	for( i = 1; i <= value; i = i + 1 )
	{
		hap = hap + i;
	}

	return hap;
}
//