일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 42서울
- phpmyadmin
- 포인터
- ft_server
- 함수
- docker
- iF
- 42cursus
- nginx
- C++
- else if
- for
- float
- 2차원배열
- vs코드 단축키
- list
- 42Seoul
- python
- cout
- 42
- While
- 패킹
- libft
- Double
- jupyter 단축키
- Class
- 자료형
- 구조체
- 동적할당
- C언어
- Today
- Total
목록C언어 (28)
Developer
C언어에는 값을 논리적으로 판단하는 논리 연산자와, 비트 단위로 연산을 수행하는 비트 연산자가 존재한다. 논리 연산자 논리 연산자는 True(참), false(거짓)으로 연산을 수행하는 것이다. C에서는 0은 거짓 이고, 0이외의 모든 값은 참으로 인식한다. 논리 연산에는 AND(논리곱),OR(논리합),NOT(논리 부정) 가 있다. AND는 양쪽 모두 참일때 참, OR는 양쪽 중 하나만 참이면 참, NOT은 참이라면 거짓으로, 거짓이라면 참으로 변화 이제 직접 C에 있는 논리 연산자를 살펴보자 C에서 AND는 && OR는 || NOT은 ! 연산자를 사용한다. #include int main(){ printf("논리곱\n"); printf("%d\n",0&&0); printf("%d\n",0&&1); pr..
이전 글에서 정수끼리의 연산에서는 정수 결과가 나오고, 실수끼리의 연산에서는 실수 결과가 나오는것을 확인하였다. 다른 자료형끼리 계산하면 어떻게 될까? C에서는 자료형을 섞어서 사용하면 자료형의 크기가 크거나 표현의 범위가 큰 자료형으로 자동 변환되어 연산된다. 이를 암시적 형 변환이라고 한다. 데이터의 손실을 최소화 하기위한 방법이다. #include int main(){ int a=8; float b=3.2f; printf("%f\n",a+b); printf("%f\n",a*b); return 0; } 정수형 변수 a와 실수형 변수 b를 연산해 출력해보았다. 코드1 처럼 자료형이 다른 두 변수가 연산을 수행하게되면 범위가 크거나, 자료형의 크기가 큰 쪽으로 형변환된다. a+b에서는 정수a가 포현 범위..
C언어에는 여러가지 연산자가 존재한다. 기본 적인 사칙 연산부터 증감 연산자 등 여러가지 연산자가 존재한다. 사칙연산 #include int main(){ int a,b,c,d; a=1+1; b=8-2; c=8*2; d=8/2; printf("%d %d %d %d\n",a,b,c,d); return 0; } 코드1 처럼 +, -, *, / 한 값의 결과를 변수로 저장할 수 있다. 물론 변수끼리도 연산을 수행할 수 있다. #include int main(){ int a=8,b=2; int c,d,e,f; c=a+b; d=a-b; e=a*b; f=a/b; a=a+2; b=b-2; printf("%d %d %d %d %d %d\n",a,b,c,d,e,f); return 0; } a에 8 b에 2가 들어있는 상..
지금까지 printf로 원하는 것을 출력하는 것과 변수를 선언해 변수에 값을 할당하는 것을 해보았다. 그러면 프로그램이 동작중 일때 키보드로 입력한 값을 변수에 넣어서 사용할 수는 없을까? scanf 함수를 사용하면 된다. printf함수로 콘솔에 출력하는 방식을 표준 출력(standard output)이라고 하고, 콘솔에서 입력을 하는 방식을 표준 입력(standard input, stdin) 이라고 한다. scanf 함수도 printf와 마찬가지로 stdio.h 헤더 파일에 선언이 되어있다. scanf는 다음과 같은 형태로 사용할 수 있다. scanf(서식,변수의 주소); #include int main(){ int num; printf("입력하세요: "); scanf("%d",&num); print..
상수는 변하지 않는 값을 뜻한다. 상수에는 2가지 종류가 있는데 리터럴(literal) 상수와 심볼릭(symbolic) 상수 이다. 리터럴 상수는 1, 3, 'A' 와 같은 이름이 없는 상수를 말하고 심볼릭 상수는 이름이 있는 상수를 말한다. int num = 8; 을 예로 들면 num 은 변수이고, 8은 리터럴 상수인 것이다. 그렇다면 심볼릭 상수는 무엇일까? 상수는 변하지 않는 값인데 이름이 존재하다니.. C언어 에서는 이름 const 키워드를 통해 심볼릭 상수를 만들 수 있다. const int num = 8; 위에 선언한 변수와 차이점은 앞에 const라는 키워드가 붙은것인데 이는 num을 상수로 선언한다는 뜻이다. 하지만 보통 변수 선언과 다르게 주의할 점이 있는데 상수는 선언과 동시에 초기..
컴퓨터에서 0과 1로 소수를 표현하는 방식을 부동소수점 표현 방식이라고 한다. 이에 관한 규약은 IEEE 754라는 표준으로 정해져 있다.모든 소수를 표현할 수 없으므로 근사치를 사용해야 하기때문에 이러한 방법을 사용한다. 이 부분은 나도 배운지 오래되어서 완벽하게 알려줄 수 없으며 관심이 있는 사람만 재미로 보기를 바란다. IEEE 부동소수점 표준은 수를 $$V= (-1)^{s} * M * 2^{E}$$ 형태로 나타낸다. 1. S는 부호를 나타내며 1이면 음수 0이면 양수 이다. 2. M은 유효숫자로 1과 2-ε사이 또는 0과 1-ε 사이의 값을 갖는다. 3. E는 지수로 2의 제곱으로 자리값을 제공한다. 그러면 이를 컴퓨터에서 어떻게 저장하는지 알아보자 위의 값들을 인코딩하기 위해 3개의 필드..
진법은 수를 표기하는 방법을 나타낸다. 우리가 사용하고있는 자리당 0~9의 숫자를 사용하는 것이 10진법이다. 2진법은 0과1 두가지의 숫자로만 표현하는 방법이고, 8진법은 0~7, 16진법은 0~F로 수를 표기하는 방법이다. 2진법 2진법은 0과 1만으로 수를 표현하는 방법이다. 가장 오른쪽 자리 부터 1, 2, 4, 8... 이렇게 2의 거듭승으로 표현된다. 128 64 32 16 8 4 2 1 이렇게 8자리의 2진수를 생각해 보자 각 자리의 값이 1인 수만 더해주면 해당 2진수가 10진수로 몇 인지 계산할 수 있다. 0010 1111 이라는 2진수가 있다면 10진수로 1+2+4+8+32 =47 인것을 계산할 수 있다. 반대로 10진수를 2진수로 바꿀 수도 있다. 바꾸려는 숫자를 몫이 0이 될때까..
이전에 말했듯이 char형 변수에는 문자에 해당되는 정수값이 저장되는 것이다. 대문자 A가 65 소문자 a가 97 이 두 가지는 알아두면 나중에 편하게 사용할 수 있다. char형 변수에 값을 문자를 저장할 때에는 65처럼 정수형으로 저장을 해도 되지만 'A' 처럼 작은따옴표로 문자 형식으로 직접 저장할 수 있다. #include int main(){ char input1='a'; char input2=97; printf("%c %d \n",input1,input2); printf("%c %d \n",input1,input2); return 0; } char형 변수 input1은 작은따옴표로 묶은 문자 a, char형 변수 input2는 정수 97을 저장하였다. 그런 후에 각각 %c(문자 서식지정자)와 ..