[C언어 기초]_23.03.08

‍전희주·2023년 3월 8일

first.c

// first.c 
#include <stdio.h>

//C언어는 함수의 집합, 함수는 호출되면 절차 지향으로 실행됨 
// \n : 줄바꿈 
// 실행문은 세미콜론;으로 끝남

// main 아닌 함수는 호출시 실행 
funcA()
{
	printf("funcA() called. \n");
}

// main 함수는 최상위 부모 함수 역할 -> 시작, 끝 
// main 함수 내 자식 함수 위치 무관
// 함수(method)명으로 구분(함수명 중복 불가) cf. 객체 지향 언어  

int main() //자동으로 시작하는 진입점 함수 
{
	printf("main() start. \n");
	funcA(); // 함수호출 ()괄호 사용 필 
	printf("main() end. \n");

	return 0;
	
} 


datatype1.c

//datatype1.c 

#include <stdio.h> 
#define EQ "=====" //매크로 상수 
#define MSG "다우기술" //매크로 상수
#define SUM(x,y) x+y //매크로 함수


int main()
{
// 변수(variable):데이터를 저장하는 메모리 임시 기억 장소 
// 변수나 배열 선언: 자료형의 크기만큼 메모리를 할당하고, 
	//             컴파일러에게 자료형을 알린다. 
	

//변수(variable): 데이터를 저장하는 메모리 임시 기억 장소
	// 선언문 
	char ch; // 변수 선언 (a0a
	int num;
	double dnum; 
	const float PI = 3.14159; // 변수를 상수화 (반드시 초기화 수행) cf. 매크로 상수-> 활용도 높음 

	ch = 'A'; //변수 값의 치환 cf. ch = "A"; 이중인용부호("")는 문자열 할당
	num = 1000;
	dnum = 1.5; 
	// PI = 3.5;


	// 실행문 
	printf("C 언어의 데이터 타입(DataType) \n");
	printf("문자열: %s, 문자: %c \n", "campus", 'B');
	printf("%d+%d=%d \n", 100, 200, 100 + 200);
	//ch:A, num:1000, dnum:1.500000 
	printf("ch:%c, num:%d, dnum:%lf\n", ch, num, dnum); 
	num = 200;
	printf("ch:%c, num:%d, dnum:%lf\n", ch, num, dnum);
	printf("PI: %f\n", PI); 

	printf("%s \n", EQ);
	printf("%s \n", MSG);
	printf("%d \n", SUM(1000, 2000)); 
	printf("%s \n", EQ);

	return 0; 

}

// 변수 초기화 : 변수 선언과 동시에 값을 할당함 

datatype2.c

//datatype2.c

#include <stdio.h>

int main()
{
	char ch= 'A'; // 변수 선언 (a0a
	int num = 500;
	double dnum =1.1;
	float fnum = 5.3;

	printf("%d, %d, %d \n", sizeof(char), sizeof(int), sizeof(double));
	printf("%d, %d, %d, %d \n", sizeof(ch), sizeof(num),
										sizeof(fnum), sizeof(dnum));

	printf("%d, %d, %d \n", sizeof(10), sizeof(1.1), sizeof(1.2F)); 
	printf("%c, %d, %f, %1f \n", ch, num, fnum, dnum); //할당된 값 
	printf("%p, %p, %p, %p \n", &ch, &num, &fnum, &dnum); //할당된 주소 // %p는 메모리 주소를 출력하는 자료형 지정자 
	return 0; 
}

// 메모리 주소에 직접 접근해 변수 할당이 가능

datatype3.c


#include <stdio.h>

int main()
{
	signed char c1 = 'A'; 
	// signed로 선언된 문자변수 , 데이터 범위: +-127 
	unsigned char c2 = 97; 
	// unsigned로 선언된 문자변수 (양수값만 저장, 음수 표현하지 않아 signed보다 메모리수 더 큼) 
	

	printf("%d:%c \n", c1, c1); // 아스키코드와 출력 (대문자 A는 아스키 코드 65)  
	printf("%d:%c \n", c2, c2);
	printf("%d, %d \n", sizeof(c1), sizeof(c2));

	short int x1; // short로만 표기 가능 
	int x2; 
	long int x3;
	// long long int x4; 32비트 환경에서 유의미하게 사용되는 함수 
	__int64 x4; 

	printf("%d, %d, %d, %d \n", sizeof(x1), sizeof(x2), sizeof(x3), sizeof(x4)); // 2 4 4 8 
	
	float fnum = 123456789123456789;
	double dnum = 123456789123456789;
	long double ddnum= 123456789123456789;

	printf("fnum : %f \n",  fnum);
	printf("dnum : %lf \n",  dnum); 
	printf("ddnum: %d, %llf \n", sizeof(ddnum), ddnum); //double형과 크기 동일   
	return 0;  

}

scanf1.c

//scanf1.c 
#include <stdio.h>

int main()
{
	int x, y;

	//printf("input x?"); // 200[enter] 
	//scanf("%d", x); // 에러 발생, 저장될 메모리 주소가 할당되어야함 -> 엠퍼샌드(&) 기호 사용 필  
	//printf("input y ?");
	//scanf("%d", y); 

    printf("input x?"); // 200[enter] 
	scanf("%d", &x); // 저장될 메모리 주소가 할당되어야함 -> 엠퍼샌드(&) 기호 사용 필  
	printf("input y ?");
	scanf("%d", &y);

	printf("%d + %d = %d \n", x, y, x + y);
	printf("%d - %d = %d \n", x, y, x - y);
	printf("%d x %d = %d \n", x, y, x * y);
	printf("%d / %d = %d \n", x, y, x / y);
	printf("%d %% %d = %d \n", x, y, x % y);

	return 0; 
}

실습문제 풀이



#include <stdio.h> 

int main();
void func1(void);
void func2(void);

int main()
{
	printf("안녕하세요!!! \n");
	func2();
	func1();
	return 0; 

}

void func1(void)
{
	printf("투바투 입니다.");
}

void func2(void)
{
	printf("제 이름은");
}
  • pritntf가 정의된 형태

    _Check_return_opt_
    _CRT_STDIO_INLINE int __CRTDECL printf(
        _In_z_ _Printf_format_string_ char const* const _Format,
        ...)
    #if defined _NO_CRT_STDIO_INLINE
    ;
    #else
    {
        int _Result;
        va_list _ArgList;
        __crt_va_start(_ArgList, _Format);
        _Result = _vfprintf_l(stdout, _Format, NULL, _ArgList);
        __crt_va_end(_ArgList);
        return _Result;
    }
  • 매크로 상수

c1 1byte(8bit)
-> (A) 할당

profile
heejoojeon@daou.co.kr

0개의 댓글