'분류 전체보기'에 해당되는 글 84건
- 2010.06.06 상수의 표기
- 2010.06.06 sizeof 연산자를 이용한 Data Type 크기 확인
- 2010.06.05 Data type 사이의 대입 및 출력 형식
- 2010.06.05 cl.exe 옵션 정리
- 2010.06.05 GCC 옵션 정리
- 2010.06.05 변환문자
- 2010.06.05 쉘프로그래밍
- 2010.06.04 printf() 함수 내부
- 2010.05.31 라이브러리 만들기
- 2010.05.31 gdb 사용법
#include <stdio.h> int main() { signed int si_num = 43; unsigned int ui_num = 43U; signed long int sli_num = 43L; unsigned long int uli_num = 43UL; float f_num = 43.0F; double d_num = 43.0F; long double ld_num = 43.0L; printf("CONSTANT NOTATION\n\n"); printf("Integer Type\n"); printf("%8s %11s %5s (%3s) : %d\n", "signed", "int", "43", "%d", si_num); printf("%8s %11s %5s (%3s) : %u\n", "unsigned", "int", "43U", "%u", ui_num); printf("%8s %11s %5s (%3s) : %ld\n", "signed", "long int", "43L", "%ld", sli_num); printf("%8s %11s %5s (%3s) : %lu\n", "unsigned", "long int", "43UL", "%lu", uli_num); printf("\n"); printf("Real Number Type\n"); printf("%8s %11s %5s (%3s) : %f\n", "", "float", "43.0F", "%f", f_num); printf("%8s %11s %5s (%3s) : %lf\n", "", "double", "43.0F", "%lf", d_num); printf("%8s %11s %5s (%3s) : %Lf\n", "", "long double", "43.0L", "%Lf", ld_num); return 0; } |
RESULT------------------------------------------------------------------------------------------------------------- CONSTANT NOTATION Integer Type signed int 43 ( %d) : 43 unsigned int 43U ( %u) : 43 signed long int 43L (%ld) : 43 unsigned long int 43UL (%lu) : 43 Real Number Type float 43.0F ( %f) : 43.000000 double 43.0F (%lf) : 43.000000 long double 43.0L (%Lf) : 43.000000 RESULT------------------------------------------------------------------------------------------------------------- |
'C' 카테고리의 다른 글
16진수 0xffffffff의 값 (signed and unsigned) (0) | 2010.06.06 |
---|---|
형식 지정자 (0) | 2010.06.06 |
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
#include <stdio.h> int main() { printf("Integer Type:\n"); printf("%8s %11s : %2d\n", "signed", "char", sizeof(signed char)); printf("%8s %11s : %2d\n", "unsigned", "char", sizeof(unsigned char)); printf("\n"); printf("%8s %11s : %2d\n", "signed", "short int", sizeof(signed short int)); printf("%8s %11s : %2d\n", "unsigned", "short int", sizeof(unsigned short int)); printf("\n"); printf("%8s %11s : %2d\n", "signed", "int", sizeof(signed int)); printf("%8s %11s : %2d\n", "unsigned", "int", sizeof(unsigned int)); printf("\n"); printf("%8s %11s : %2d\n", "signed", "long int", sizeof(signed long)); printf("%8s %11s : %2d\n", "unsigned", "long int", sizeof(unsigned long)); printf("\n"); printf("Real Number Type:\n"); printf("%8s %11s : %2d\n", "", "float", sizeof(float)); printf("%8s %11s : %2d\n", "", "double", sizeof(double)); printf("%8s %11s : %2d\n", "", "long double", sizeof(long double)); return 0; } |
RESULT------------------------------------------------------------------------------------------------------------- |
'C' 카테고리의 다른 글
형식 지정자 (0) | 2010.06.06 |
---|---|
상수의 표기 (0) | 2010.06.06 |
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
Data type 구분
정수형 : char, short, int, long
실수형 : float, double, long double
대입 연산시 경고 메시지 출력 유무
No Warning
char, short, int, long <--> char, short, int, long
float, double, long double <--> float, double, long double
입력 형식 지정사 사용시 경고 메시지 출력 유무
Warning
char * --> %d (int *)
int * --> %c (char *)
형식 지정자 사용시 경고 메시지 출력 유무
No Warning
char, short, int --> %c, %d, %hd
long --> %ld
float, double --> %f, %lf
long double --> %Lf
'C' 카테고리의 다른 글
상수의 표기 (0) | 2010.06.06 |
---|---|
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
변환문자 (0) | 2010.06.05 |
MS C Compiler
명령어 : cl
>cl test.c
>dir
test.c
test.exe
옵션 :
/P : Preprocessing 후 .i 파일만 생성
>cl /P test.c
>dir
test.c
test.i
/Fa : Compiling 후 .asm 파일, .obj 파일, .exe 파일 생성
>cl /Fa test.c
>dir
test.asm
test.c
test.exe
test.obj
/c : Assembling 후 .obj 파일만 생성
>cl /c test.c
>dir
test.c
test.obj
'C' 카테고리의 다른 글
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
---|---|
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
변환문자 (0) | 2010.06.05 |
printf() 함수 내부 (0) | 2010.06.04 |
GCC (GNU Compiler Collection)
명령어 : gcc
$ gcc test.c
$ ls
a.out test.c
$ ls
a.out test.c
옵션 :
-E -o 파일명 : Preprocessing 후 .i 파일만 생성 (-o 파일명을 하지 않으면 전처리 내용을 화면에 출력함)
$ gcc -E -o test.i test.c
$ ls
test.c test.i
-S : Compiling 후 .s 파일만 생성
$ gcc -S test.c
$ ls
test.c test.s
-c : Assembling 후 .o 파일만 생성
$ gcc -c test.c
$ ls
test.c test.o
그 외 옵션 :
--save-temps : .i, .s, .o, 실행 파일을 모두 생성
-g : Debugging 정보까지 포함시켜 컴파일
-l : Library 파일이름을 지정 (소문자 엘)
-L : Library가 위치한 디렉토리를 지정
-Wall : 모든 경고 메시지 출력
예제) 현재 디렉토리에 mylib.o 또는 mylib.so 파일이 있는 경우
$ gcc --save-temps -Wall -g -lmylib -L. -o test test.c
중간 단계의 모든 파일을 생성하고 모든 경고 메시지를 출력하며 디버깅 정보를 포함하여 컴파일한다.
'C' 카테고리의 다른 글
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
---|---|
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
변환문자 (0) | 2010.06.05 |
printf() 함수 내부 (0) | 2010.06.04 |
int short long
decimal : %d %hd %ld
octal %o %ho %lo
hexa %x %hx %lx
unsigned %du %hu %lu
float double(long float) long double
%f %lf
#include <stdio.h> int main() { int inum; int *ip; short *sp; inum = 0x0F5A0B43; ip = &inum; printf("%-4s : %10x,\t%3s : %10p\n", "inum", inum, "*ip", ip); sp = (short *)ip; printf("%-4s : %10p,\t%3s : %10x\n", "sp", sp, "*sp", *sp); sp++; printf("%-4s : %10p,\t%3s : %10x\n", "sp", sp, "*sp", *sp); return 0; } |
'C' 카테고리의 다른 글
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
---|---|
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
printf() 함수 내부 (0) | 2010.06.04 |
터미널을 열고 아래와 같이 입력해보자.
Hello world
$
echo는 '메아리' 또는 '울려퍼지다'라는 뜻을 가지고 있다. 따라서 뒤에 오는 문자열을 출력하는 기능을 수행한다.
이번에는 변수를 사용해 보자.
C언어처럼 자료형을 붙일 필요도 없고 선언할 필요도 없다. 그냥 쓰고 싶을 때 변수 이름만 쓰고 뒤에 값을 넣으면 된다.
아래와 같이 입력
$ str="Hello world"
$ echo $str
Hello world
$
#주의사항
1. 변수에 값을 넣을 때에는 변수 앞에 $를 쓰지 않고, '변수명=값' 이렇게 붙여써야 한다.
2. 변수에 들어있는 값을 이용할 때에는 $를 붙여주어야 한다.
기본적인 사용법을 알았으니 간단한 쉘스크립트 파일을 만들어보자.
$vi ex01.sh
#!/bin/bash
str = "Hello world"
echo $str
:wq
$ chmod 755 ex01.sh
$ ./ex01.sh
Hello world
printf 함수
내부적으로 fprintf(stdout, string, mode) 호출
반환자료형은 int, 반환값은 화면에 출력된 문자의 갯수
./a.out > out.txt : stdout으로 설정된 문자열만 파일로 저장, 나머지는 화면으로 출력
./a.out 1> out.txt : stdout으로 설정된 문자열만 파일로 저장, 나머지는 화면으로 출력
./a.out 2> out.txt : stderr로 설정된 문자열만 파일로 저장, 나머지는 화면으로 출력
예전 슈퍼컴퓨터에서는 stdout을 모니터, stderr을 tape(?)로 지정하였으나, 현재에는 둘 다 모니터로 지정되어 있다.
fpin = fopen(filename, mode) --> fopen이 생성한 file descripter(?)의 시작주소를 넘김...파일 열지 못했을 경우 0을 넘김
int A = 100; 은 두가지 작업을 함
1. 메모리 확보
2. cpu에서 메모리로 값 전송
whlie(!(feof(fpin)) --> while(0 == feof(fpin))
리눅스에서는 장치도 파일 형식으로 인식함.
NULL은 0으로 define되어 있음 (매크로 : #define EOF (-1)
exit(1) - 모든 프로그램을 닫아버림
fscanf(...) -> 파일 끝에서 EOF 반환, 끝이 아닌 경우의 반환값은???
fclose(stdin) -> 입력받지 않고 그냥 다음 명령 수행
fclose(stdout) -> 출력하지 않고 그냥 다음 명령 수행
해당 파일을 닫는 동작임. stdin, stdout, stderr도 파일 형식으로 인식
'C' 카테고리의 다른 글
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
---|---|
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
변환문자 (0) | 2010.06.05 |
http://www.hanb.co.kr/network/view.html?bi_id=351 makefile 사용예
#include <stdio.h>
int input()
{
int in;
printf("What is your favorite number: ");
scanf("%d", &in);
return in;
}
:wq
$ vi output.c
#include <stdio.h>
void output(int out)
{
printf("Your favorite number is %d.\n", out);
}
:wq
$ vi main.c
#include <stdio.h>
int main()
{
int num;
num = input();
output(num);
return 0;
}
:wq
$ vi input.h
extern int input();
:wq
$vi output.h
extern void output(int)
:wq
$ ls
input.c input.h main.c output.c output.h
$ gcc -c input.c output.c
$ ls
input.c input.h input.o main.c output.c output.h output.o
$ ar r libmylib.a input.o output.o
ar: creating libmylib.a
$ ls
input.c input.h input.o libmylib.a main.c output.c output.h output.o
$ ar s libmylib.a
$ ls
input.c input.h input.o libmylib.a main.c output.c output.h output.o
$ ar t libmylib.a
input.o
output.o
$ ls
input.c input.h input.o libmylib.a main.c output.c output.h output.o
$ gcc -o main main.c -lmylib -L.
$ ls
input.c input.h input.o libmylib.a main main.c output.c output.h output.o
$ ./main
What is your favorite number: 3
Your favorite number is 3.