www.gnu.org gcc 최신버전을 받으려면. 리눅스나 유닉스는 별도의 gcc를 깔 필요는 없음.
윈도우의 gcc는 minGW 를 사용할 것임.
리눅스 터미널에서 gcc --version 으로 gcc버전확인.
컴파일 gcc helloworld.c , 실행파일이 a.out이 생겼다.
실행을 위해 a.out을 쓰면 실행이안된다. 하기 위해서는 이 경로를 지정해주던가, 아니면 현재폴더를 export를 이용해서 내보내주어 ...(?)
간편하게 ./a.out 으로 실행...
gcc -c helloworld.c 으로 하면 helloworld.o라는 목적파일이 만들어진다(이것은 실행파일이 아님). -c는 컴파일만 하라는 것.
아까 gcc helloworld.c 는 컴파일도하고 링크도 걸어 실행파일을 만들은 것.
그리고 gcc helloworld.o 를 하면 실행파일 a.out이 만들어진다.
gcc -o helloworld helloworld.o 의 명령어로 실행파일 이름을 helloworld의 이름으로 실행파일을 만들 수 있다.
윈도우에서는 http://www.mingw.org/ 로 접속한다. 왼쪽에 navigation-Downloads 에서 다운받아 설치하면 윈도우8에선 문제가 생겼다고 해서
http://www.javaexpert.co.kr/entry/Windows7-%EC%97%90%EC%84%9C-minGW-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0 에서 다운.
설치하다가 체크하는 것에서 MinGW Make만 체크하고 다음 다음으로 설치 마무리.
system setting에서 advanced system settings에서 advanced에서 environment variables 선택. system variables에서 Path를 찾아 Edit클릭.
variable value 값에 제일 뒤에 ;C:\MinGW\bin;(minGW설치한 곳에서 bin폴더의 경로를 붙여주는 것임) 라고 붙여 넣어준다. - 이것은 어디서나 gcc를 사용할 수 있게 하기 위해.
원래는 재부팅을 해야하지만 명령프롬프트 창에서 set path 명령어를 통해 path설정 마무리.
echo %path% 명령어로 확인.
메모장으로 c파일을 저장할 때는 encoding은 ANSI 해야하고, save 타입은 all files 로 해야한다. 그리고 마지막 라인의 한줄 이상은 빈공간으로 둬야한다. 아니면 에러
type helloworld.c 명령어는 cat명령어와 같다. gcc -o helloworld helloworld.o 의 명령을 하면 exe 파일이 만들어짐.
실행시에는 helloworld 그냥 실행 파일 이름만 써주면됨.
에디트플러스 c의 기본 template을 바꾸려면 프로그램파일즈-에디트플러스에 template.cpp와 new-configure templates의 경로 두 군데를 수정해 주어야한다(처음 c파일을 만들었을 때 나오는 것을 수정하는 작업)
아래와 같이 tools-preferences에서 수정해준다.
위 사진이 잘안보여서...
Menu text : Compile
Commands : C:\MinGW\bin\gcc.exe
Argument : -o $(FileNameNoExt) $(FileName)
Initial directory : $(FileDir)
Action 은 Capture output을 해준다.
그러면 Tools에서 보면 compile이라는 것을 볼 수 있다. 그것을 누르거나 ctrl+1을 눌러 컴파일을 실행할 수 있다.
그리고 preferences 메뉴에서 File 탭에서 create backup file when saving을 체크해제하여 컴파일시 .bak 파일 만들어지는 것을 없앨 수 있다.
Tools-preferences에서 아래와 같이 run 메뉴도 설정해주자.
Menu text : Run
Commands : cmd.exe
Argument : /C $(FileNameNoExt).exe
Initial directory : $(FileDir)
Action 은 만지지 않는다.
실행시 새창이 뜨며 결과 값이 나온다.
그러면 ctrl+1로 컴파일, ctrl+2로 실행까지 할 수 있다.
Datatype
1. memory size를 결정
a. 진법변환을 할 줄 알아야한다.
b. 양수, 음수, complement 보수
c. 최소값, 최대값
2. data의 종류를 결정
1.내장형(기본형)(built-in type) -
A. 수치형 :
a. 정수형 :
1)문자형 : unsigned char, char 1byet
2)정수형 : short, int, long, unsigned short, unsigned int, unsigned long (long 4byte, short과 int는 2byte)(short,int는 -32768~32767)(long은 -2147483648~2147483647)
b. 실수형 : float, double (float 4byte, double 8byte)
c. 나열형 : enum
B. 문치형 : void
2.외장형(추상형)(user-defined type)
struct, union, class, pointer 변수, 함수, array
(진법변환 : http://pikich89.blog.me/10134113471
2의 보수를 이용한 뺄셈 : http://blog.naver.com/undust2?Redirect=Log&logNo=100035742421 )
1. C-언어의 역사
1)ALGOL60 --> CPL --> BCPL --> B --> C --> C++ --> Java
2)Multics
3)Bell Lab. 의 연구원 Ken Tompson & Dennis Ritchie
4)1972, UNIX
5)1979년 K&R C Programming 책을 펴냄
6)1989년 발표된 표준 -C (C89, ANSI Standard C)
2. C-언어 구성요소
1) Comments
2) Preprocessor(전처리기, 선처리기)
3) function
3. C-언어에서 사용되는 문자
1) 영문자 : A ~ Z, a ~ z, 대소문자를 구분한다.
2) 숫자 : 0~9, A(10), B(11), C(12), D(13), E(14), F(15), 대소문자를 구분하지 않는다.
3) 특수문자
4. 예약어(Reserved Word, Keyword)
1) 지정된 목적외에 사용자가 임의의 용도로 사용할 수 없는 문자, 반드시 소문자로 기술한다.
2) 기억류와 관련된 예약어
- 어느 위치에서 생성 또는 소멸되는지를 결정
- auto, register, static, extern
- ex. static int kor;
3) 자료형과 관련된 예약어
-정의된 기억장소(변수, 상수)를 어떠한 유형으로 사용할 것인가를 결정
- char : 한문자만을 대상으로 기억하는 기억장소를 정의할 때 표현
- unsigned char :
- short, int, long : 정수값을 기억하기 위한 장소를 정의할 때 표현
- unsigned short, unsigned int, unsigned long
- float, double : 실수값을 기억하기 위한 장소를 정의할 때 표현
4) 제어문과 관련된 예약어
- 명령어의 흐름을 결정하기 위한 예약어
- goto, break, continue
- if~else, switch~case
- for, do, while
5) 기타 예약어
- sizeof, typedef
5. 식별자(Identifier)
- 사용자가 임의로 지정하는 이름
- 변수명, 함수명, 상수명, 구조체명, 공용체명, 배열명
- 절대로 키워드는 식별자가 될 수 없다.
Literal(cf, Value, 상수)
1. 정수형 Literal
1) 소수점이 포함되어 있지 않은 수치값 5, 128
2) 메모리에 기본적으로 4바이트 공간할당한다.
3) 정수형에서 사용할 수 있는 문자
- 숫자 : 0~9, a, b, c, d, e, f
- 기호 : 0x (16진수)
- 표현부호 : +, -
4)진법(base)
- 10 --> 10진수
- 076 --> 8진수
- 0xAB -->16진수
5) 출력서식
- %d --> 10진수(decimal)
- %o --> 8진수(Octal Number)
- %x --> 16진수(Hexa Decimal)
- %u --> unsigned - 값은 이미 넘어섰고 음수가 아닌 값에 붙여줌.
printf("%d\n", 2147483648); 출력이 -2147483648
printf("%u\n", 2147483648); 출력이 2147483648
2. 문자형 literal
1) 한개의 문자를 표현하기 위한 타입
2) ' ' 안에 한개의 문자를 표현 'A', "A"
3) 특수문자(escape sequence)를 표현하기 위한 타입
- \n :new line
- \r : carriage return -라인의 맨처음으로(맨처음으로 가면서 다 지우는듯..)
- \a : alert
- \b : backspace - 한 문자 삭제
- \f : form feed
- \t : tab
4)출력서식 :
- %c(한개의 글자 출력), [%d]
printf("%c", 'A');
printf("%c", 65);
printf("%c", 65 + 1);
printf("%c", 'A' + 2);
printf("%c", '\n');
printf("%c", '\a');
printf("%c", 'a');
printf("%c", 'a' + 4);
printf("%c", '\b');
printf("%c", 'M');
printf("%c", 89.5);
출력 :
AABC
aM
(ae가 찍혔다가 e를 지운 후 M을 찍어줌)
3. 실수형 리터럴
1) 소수점이 포함되어 있는 값
2) 십진형 실수(89.5, 3.14), 지수형 실수(3.95E+01, 0.4e-3)
3) 출력서식
- %f(십진형 실수형으로 출력)
- %e(지수형 실수형으로 출력)
printf("%f\n", 89.5);
printf("%f\n", 89.123456789);
printf("%f\n", 34.5E+02);
printf("%e\n", 89.5);
printf("%e\n", 89.123456789);
printf("%e\n", 0.00045678);
printf("%e\n", 34.5E+02);
출력 :
89.500000
89.123457
3450.000000
8.950000e+01
8.912346e+01
4.567800e-04
3.450000e+03
4) 사용가능한 문자
- 0~9, e, f(F, 4byte)
5) 실수형 리터럴을 메모리에 저장하면 메모리에 기본적으로 8바이트 공간을 확보하며, 만일 4바이트 공간을 확보하려면 리터럴 뒤에 'f(F)'를 붙인다.
printf("float's sizeof = %d\n", sizeof(float));
printf("double's sizeof = %d\n", sizeof(double));
printf("3.14F's sizeof = %d\n", sizeof(3.14F));
printf("3.14's sizeof = %d\n", sizeof(3.14));
출력 :
float's sizeof = 4
double's sizeof = 8
3.14F's sizeof = 4
3.14's sizeof = 8
4. 문자열형 리터럴
1)한개 이상의 문자들을 처리하기 위한 타입
2)출력서식
%s --> 시작번지로부터 NULL을 만날때까지 출력하기
printf("%d\n", sizeof("hello"));
출력 :
6
hello는 5바이트인데 6이라고 잡히는 것을 볼 수 있다. 이것은 맨 끝에 null이 포함되어 그런 것이다.
printf("%s\n", "Hello,World");
printf("%s\n", "Hello,World" + 2);
printf("%s\n", "Hello,World" + 5);
출력:
Hello,World
llo,World
,World
" " + 숫자 는 번지수를 옮기는 것을 의미한다. H가 1000번지라면 +2를 했다면 1002번지 부터 출력하는 것을 의미한다. 따라서 앞의 He는 삭제되고 llo부터 출력이 시작되는 것이다.
'Java & Oracle' 카테고리의 다른 글
c 입출력함수 day8 (0) | 2014.02.26 |
---|---|
c 변수, 연산자 day7 (0) | 2014.02.25 |
ftp 연결, ping day5 (0) | 2014.02.21 |
vi editor day5 (0) | 2014.02.21 |
리눅스 명령어 day4 (0) | 2014.02.20 |