" "
로 감싸야 한다.세미콜론(;)
을 붙여야 한다.$ 옆
에 명령어를 입력하면 된다.'='은 할당 연산자
로 오른쪽에 있는 것을 왼쪽에 지정한다.형식연산자 '%'
를 사용하면 된다 !조건
이 들어가고 {} 안에는 조건을 만족할 때 수행할 작업
이 들어간다.==
은 일치 연산자이다.데이터 타입
- bool ex) True, False, 1, 0, yes, no
- char : 문자 하나 ex) 'a', 'Z', '?'
- string : 문자열
- int : 특정 크기 또는 특정 비트까지의 정수 ex) 5, 28, -3, 0
- long : 더 큰 크기의 정수
- float : 부동소수점을 갖는 실수 ex) 3.14, 0.0, -28.56
- double : 부동소수점을 포함한 더 큰 실수
형식 지정자
- %c : char
- %f : float, double
- %i : int
- %li : long
- %s : string
기타 연산자 및 주석
- +: 더하기
- -: 빼기
- *: 곱하기
- /: 나누기
- %: 나머지
- &&: 그리고
- ||: 또는
- //: 주석
사용자 정의 함수
를 이용하면 단순화할 수 있다.void cough(int n);
와 같이 main 전에 함수를 정의해주면 된다 !RAM은 유한한 크기의 비트만 저장할 수 있어 때때로 부정확한 결과를 내기도 한다.
부동 소수점 부정확성
SourceCode
#include <cs50.h> #include <stdio.h> int main(void) { // 사용자에게 x 값 받기 float x = get_float("x: "); // 사용자에게 y 값 받기 float y = get_float("y: "); // 나눗셈 후 출력 printf("x / y = %.50f\n", x / y); }
나눈 결과를 소수점 50자리 출력하도록 하고 x에 1을, y에 10을 입력하면 아래와 같은 결과가 나온다.
x: 1
y: 10
x / y = 0.10000000149011611938476562500000000000000000000000
→ 정확한 결과는 0.1이지만 float에서 저장 가능한 비트 수가 유한하기 때문에 부정확한 결과가 나온다.
정수 오버플로우
SourceCode
#include <stdio.h> #include <unistd.h> int main(void) { for (int i = 1; ; i *= 2) { printf("%i\n", i); sleep(1); } }
변수 i를 int로 저장하기 때문에 int 타입이 저장할 수 있는 수를 넘어가면 아래와 같은 에러와 함께 0이 출력된다.
...
1073741824
overflow.c:6:25: runtime error: signed integer overflow: 1073741824 * 2 cannot be represented in type 'int'
-2147483648
0
0
...
→ 10억을 넘기자 앞으로 넘어갈 1의 자리가 없어진 것이다.
∴ 다루는 데이터 값의 범위
를 유의하며 작성하는 것이 중요하다 !