CμΈμ΄
λνκ΅ 1νλ λ νκ΅λ‘ λ€μλ νλ‘κ·Έλλ° μμ μμ μ€ν¬λμΉλ₯Ό μ¬μ©νμλλ°, κ·Έκ²κ³Ό κ°μ λ΄μ©μ΄μλ€.
Cμμλ printfλΌλ ν¨μλ‘ νλ©΄μ νμν μ μλ€. κΈμλ λ¨μ΄, λ¬Έμ₯μ μ μ λλ νμ " " (μλ°μ΄ν)λ‘ κ°μΈμΌ νκ³ , () λ€μ ;(μΈλ―Έμ½λ‘ )μ λΆμ¬μΌ νλ€. μ΄λ° ν¨μμ μΈ λ΄μ©μ κ²νκΈ°λλ§ μ 보μ²λ¦¬κΈ°μ¬ 곡λΆνλ©΄μ νμ΄λ΄€κΈ° λλ¬Έμ μ΄λ ΅μ§ μμλ€.
#include <stdio.h>λ “stdio.h”λΌλ μ΄λ¦μ νμΌμ μ°Ύμμ “printf” ν¨μμ μ κ·Όν μ μλλ‘ νλ€.
μ°λ¦¬κ° μλλ νκΈλ‘ λ¬Έμλ₯Ό μ μ₯νμλ "λ¬Έμ.docx", "λ¬Έμ.hwp"μ κ°μ΄ νμ₯μλͺ
μ΄ λΆλ κ²μ²λΌ Cλ‘ μμ±ν μ½λλ “νμΌμ΄λ¦.c”λ‘ μ μ₯ν΄μΌ νλ€.
(λ§μ΄ν¬λ‘μννΈμ Word μ²λΌ μλμ μΌλ‘ λΆμ¬μ£Όμ§ μκΈ° λλ¬Έμ Cμ κ²½μ°μλ μ§μ .cλ₯Ό λΆμ¬μ€μΌ νλ€)
μ»΄νμΌλ¬
μ°λ¦¬κ° μ§μ μμ±ν μ½λλ “μμ€ μ½λ” μΈλ° μ΄κ±Έ 2μ§μλ‘ μμ±λ “λ¨Έμ μ½λ”λ‘ λ³νν΄μΌ μ»΄ν¨ν°κ° μ΄ν΄ν μ μλ€.
μ΄λ° μμ
μ "μ»΄νμΌλ¬"λΌλ νλ‘κ·Έλ¨μ΄ μννλ€.
λ€μμ΄ μ»΄ν¨ν°κ° μ°λ¦¬μ μΈμ΄λ₯Ό μ΄ν΄ν μ μλλ‘ κ±°μΉλ κ³Όμ μ΄λ€.
e.g., clang hello.c λΌλ λͺ λ Ήμ΄λ “clang” μ΄λΌλ μ»΄νμΌλ¬λ‘ “hello.c”λΌλ μ½λλ₯Ό μ»΄νμΌνλΌλ μλ―Έλ€.
κ·Έ κ²°κ³Ό a.out νμΌμ΄ μμ±λκ³ , ./a. out λͺ λ Ήμ΄λ₯Ό μ€ννλ©΄ μ»΄ν¨ν°κ° νμ¬ λλ ν 리μ μλ a.out νμΌμ μ€ννλ€
String
Cλ λ³μκ° μ μ₯νλ λ°μ΄ν°μ μ’ λ₯λ₯Ό μμ£Ό μ ννκ² λͺ μν΄μ€μΌ νλ€.
string answer = get_string("what's your name?\n");
λ³μ answerμ λ€μ΄μλ κ°μ μΆλ ₯ν΄μΌνκΈ° λλ¬Έμ %λ₯Ό μ¬μ©νκ³ , μ΄ λλ μ΄λ€ μ’
λ₯μ μΈμλ₯Ό λ°λμ§ μ λ¬ν΄μΌνκΈ° λλ¬Έμ stringμ sλ₯Ό %λ€μ λΆμ¬μ μΈμλ₯Ό λ°λλ€. κ·Έλμ μ΅μ’
μ μΌλ‘ printf("hello, %s\n", answer); μ΄ λλ€.
$ clang -o string string.c -lcs50
μ¬κΈ°μ -o string μ string.c λ₯Ό string.out μ΄λΌλ λ¨Έμ μ½λλ‘ μ μ₯νλλ‘ νλ λͺ λ Ήμ΄μ΄λ€.
-lcs50μ “link”λΌλ μλ―Έλ₯Ό μ§λ -l μ΄λΌλ μΈμ + “cs50” νμΌμ ν©μΉ κ²μ΄λ€. μ΄λ₯Ό ν΅ν΄ μ»΄νμΌμ cs50 νμΌμ μ°κ²°νλλ‘ μ»΄ν¨ν°μκ² μλ €μ€ μ μλ€.
μλ make λͺ λ Ήμ΄λ₯Ό ν΅ν΄μλ κ°λ¨νκ² μ»΄νμΌμ μνν μ μλ€
$make string
μ΄μ²λΌ μμ±ν μ½λλ₯Ό μ»΄νμΌ νκ³ μ€ννλ©΄, μ¬μ©μμκ² μ λ ₯κ°μ λ°κ³ λ¬Έμ₯ λ΄μ ν¬ν¨νμ¬ μΆλ ₯νλ νλ‘κ·Έλ¨μ΄ λλ€.
Number
μ΄λ²μ counterλΌλ λ³μμ μ«μλ₯Ό μ μ₯νλ€.
μ¬κΈ°μ intλ λ³μκ° μ μ(integer)λΌλ κ²μ μλ €μ£Όλ κ²μ΄κ³ , counterλ λ³μμ μ΄λ¦, 0μ κ·Έ κ°μ 0μ μ μ₯(μ΄κΈ°ν)νλ κ²μ΄λ€.
=> μ
λͺ¨λ counterμ 1μ λν κ°μ λ€μ counterμ μ μ₯(ν λΉ)νλ€λ μλ―Έ.
λ§μ°¬κ°μ§λ‘ μ€ν¬λμΉμ 쑰건문 λΈλ‘μ Cλ‘ λνλΌ μ μλ€.
if ( )μ κ΄νΈ μμλ κ²μ¬νκ³ μ νλ μ‘°κ±΄μ΄ λ€μ΄κ°κ³ , { } μμλ μ‘°κ±΄μ΄ TrueμΌ λ μννκ³ μ νλ μμ
μ λ£μΌλ©΄ λλ€.
else ifλ₯Ό ν΅ν΄μ μλμ κ°μ΄ νμ 쑰건μ μΆκ°ν μλ μλ€.
While
Cμμ while μ΄λ for μ ν΅ν΄μ 루νλ₯Ό ꡬνν μ μλ€.
while μ κ²½μ° μλ μ½λμ κ°μ΄ while ( )μ κ΄νΈ μμ 쑰건μ λ£κ³ { } μμ μνν μμ μ ν¬ν¨μν€λ©΄ λλ€.
λ§μ½ νΉμ νμλ§νΌ μμ
μ μννκ³ μΆμΌλ©΄ λ€μκ³Ό κ°μ΄ ()κ° μ°ΈμΌ λκΉμ§ {}μ μνν 쑰건μ ()μ μμ±νλ©΄ λλ€.
For
λ€μ whileλ¬ΈμΌλ‘ λμκ°μ μ΄λ²μλ i<50μ΄λΌλ 쑰건μ μΆκ°νλ€.
μ°λ¦¬λ μ²μμ iλ₯Ό 0μ΄λΌκ³ μ ν΄μ£Όμκ³ whileλ κ³μν΄μ iκ° 50λ³΄λ€ μμμ§λ₯Ό 체ν¬ν κ²μ΄λ€.
λ°λΌμ μ΄ μ½λκ° μ μμ μΌλ‘ μλνλ €λ©΄ iλ₯Ό μ¦κ°μμΌμΌ νλ€ (i = i + 1, i += 1, i++ λͺ¨λ κ°μ κ²°κ³Όλ₯Ό λΈλ€.)
μ§ν μμλ₯Ό μ 리ν΄λ³΄μλ©΄ μλμ κ°λ€.
iλ 0μΌλ‘ μ€μ -> iλ 50λ³΄λ€ μμκ°? -> μλ€ -> hello worldλ₯Ό μΆλ ₯νλ€ -> iλ₯Ό 1μ¦κ°μν¨λ€ -> iκ° 50λ³΄λ€ μμκ°?
-> (λ°λ³΅) -> iκ° 50λ³΄λ€ μμκ°? -> μμ§ μλ€ -> μ’
λ£
λ°λ‘ λ³μλ₯Ό μ μΈν΄λ λμ§λ§ μλμ κ°μ΄ for λ₯Ό μ¬μ©νλ©΄ for ( ) μμ κ°κ° (λ³μ μ΄κΈ°ν; λ³μ 쑰건; λ³μ μ¦κ°) μ ν΄λΉνλ μ½λλ₯Ό λ£μ΄μ κ°λ¨νκ² ννν μ μλ€.
μ¦, κ°μ₯ λ¨Όμ μ μ κ°μ κ°μ§λ iλΌλ λ³μλ₯Ό 0μΌλ‘ μ΄κΈ°ννκ³ , iκ° 50μΈμ§ λ§€λ² κ²μ¬λ₯Ό νκ³ , μ΄λ₯Ό λ§μ‘±νλ©΄ { } μμ λ΄μ©μ μνν νμ, iλ₯Ό 1μ© μ¦κ°μν¨λ€λ μλ―Έμ΄λ€. (int i=0; i<50; i++)
μμ whileκ³Ό κ°μ μν μ μννλ κ²μ μ μ μλ€.
μλ λͺ©λ‘μ λ³μμ λ°μ΄ν° νμ μΌλ‘ μ¬μ©ν μ μλ κ²λ€μ΄λ€
- bool: λΆλ¦¬μΈ νν, e.g., True, False, 1, 0, yes, no
- char: λ¬Έμ νλ e.g., 'a', 'Z', '?'
- string: λ¬Έμμ΄
- int: νΉμ ν¬κΈ° λλ νΉμ λΉνΈκΉμ§μ μ μ e.g., 5, 28, -3, 0
- long: λ ν° ν¬κΈ°μ μ μ
- float: λΆλμμμ μ κ°λ μ€μ e.g., 3.14, 0.0, -28.56
- double: λΆλμμμ μ ν¬ν¨ν λ ν° μ€μ
*intλ λλ΅ 40μ΅κΉμ§ μ
μ μκΈ° λλ¬Έμ 40μ΅κ² μ΄μμ λ°μ΄ν°λ₯Ό κ°μ§ μΌλΆ κ±°λ κΈ°μ
κ³Ό κ°μ μν©μ΄ μλ μΌλ° μ¬μ©μλ€μ λλΆλΆ μ μμ intλ₯Ό μ¬μ©νλ€.
νμ μ§μ μ
printf ν¨μμμλ κ° λ°μ΄ν° νμ μ μν νμ μ§μ μλ₯Ό μ¬μ©ν μ μλ€.
- %c : char
- %f : float, double
- %i : int
- %li : long
- %s : string
κΈ°ν μ°μ°μ λ° μ£Όμ
κ·Έ μΈμλ μλ λͺ©λ‘κ³Ό κ°μ΄ λ€μν μν μ°μ°μ, λ Όλ¦¬ μ°μ°μ, μ£Όμ λ±μ΄ κΈ°νΈλ‘ μ μλμ΄ μλ€.
- +: λνκΈ°
- -: λΉΌκΈ°
- *: κ³±νκΈ°
- /: λλκΈ°
- %: λλ¨Έμ§
- &&: κ·Έλ¦¬κ³ (μμ λ€ μ°Έ)
- ||: λλ (μμ μ€ νλλΌλ μ°Έ)
- //: μ£Όμ