기초 · 02
변수와 값
값에 이름을 붙여 두고 다시 쓰거나 바꿔요.
변수는 값에 붙인 이름표예요.
아래 예제는 이름과 나이를 변수에 넣어 찍고, 나이를 1 늘려 다시 찍어요.
name = "Lara"age = 10print(name + " " + str(age))age = age + 1print(age)const name = "Lara";let age = 10;console.log(name + " " + age);age = age + 1;console.log(age);const name: string = "Lara";let age: number = 10;console.log(name + " " + age);age = age + 1;console.log(age);public class Main { public static void main(String[] args) { String name = "Lara"; int age = 10; System.out.println(name + " " + age); age = age + 1; System.out.println(age); }}using System; class Program{ static void Main() { string name = "Lara"; int age = 10; Console.WriteLine(name + " " + age); age = age + 1; Console.WriteLine(age); }}#include <iostream>#include <string> int main() { std::string name = "Lara"; int age = 10; std::cout << name << " " << age << '\n'; age = age + 1; std::cout << age << '\n';}#include <stdio.h> int main(void) { const char *name = "Lara"; int age = 10; printf("%s %d\n", name, age); age = age + 1; printf("%d\n", age); return 0;}name = "Lara";age = 10;콘솔.쓰기(name + " " + age);age = age + 1;콘솔.쓰기(age);Lara 10 11
핵심
=는 "같다"가 아니라 "오른쪽 값을 왼쪽 이름에 넣어라"예요.
그래서age = age + 1이 말이 돼요.- 어떤 언어는 변수를 만들 때 타입(정수, 문자열 등)을 적어요.
어떤 언어는 값이 자기 타입을 알아서 적지 않아요. - 바꾸지 않을 값은 상수로 만들어요.
상수에 다시 넣으면 오류가 나요. - 정수에는 담을 수 있는 크기가 있어요.
32비트int는2,147,483,647(약 21억)까지라, 더 큰 수는 64비트 정수(약 922경까지)를 써요.
언어별로 쓰는 법
| Python | age = 10 — 타입을 적지 않아요.상수 문법이 없어서 MAX_SCORE처럼 대문자 이름으로 약속만 해요.정수 크기에 제한이 없어요. 바꾸기는 a, b = b, a |
|---|---|
| JavaScript | let age = 10, 상수는 const(다시 넣으면 실행 중 TypeError: Assignment to constant variable.).수는 2^53(약 9×10^15)까지만 정확해요. 바꾸기는 [a, b] = [b, a], 문자열 안에 넣기는 ${age} |
| TypeScript | let age: number = 10 — 타입을 안 적어도 값을 보고 짐작해요.상수 const에 다시 넣으면 컴파일 오류.나머지는 JavaScript와 같아요 |
| Java | int age = 10;, 문자열은 String, var로 짐작하게 할 수도 있어요.상수는 final, 큰 수는 long.바꾸기는 임시 변수로 |
| C# | int age = 10;, 문자열은 string, var도 돼요.상수는 const, 큰 수는 long.바꾸기는 (a, b) = (b, a), 문자열 안에 넣기는 $"{age}" |
| C++ | int age = 10;, 문자열은 std::string, auto로 짐작하게 할 수도 있어요.상수는 const, 큰 수는 long long.바꾸기는 std::swap(a, b) |
| C | int age = 10;, 문자열은 const char *(또는 char 배열).상수는 const, 큰 수는 long long.바꾸기는 임시 변수로. 문자열과 수는 printf("%s %d\n", name, age)처럼 자리에 넣어요 |
| Craykon | age = 10; — 타입을 적지 않고, 상수는 없어요.수는 2^53까지 정확해요. 바꾸기는 임시 변수로. 나는 키워드라서 변수 이름으로 못 써요 |
자주 하는 실수
블록 안에서 처음 만든 변수를 밖에서 썼어요Craykon
만약 (참) {
y = 1;
}
콘솔.쓰기(y);→ "'y'은(는) 아직 만들지 않은 이름이에요" 오류
블록보다 앞에서 y = 0;으로 먼저 만들어요.
(Python은 블록 밖에서도 보여요.)
a = b; b = a;로 바꿨어요
a = 1; b = 2;
a = b;
b = a;→ a도 b도 2예요. 첫 줄에서 a의 원래 값이 사라졌거든요
임시 변수를 써요: t = a; a = b; b = t;
처음 값 없이 더해 나갔어요C · C++
int total;
total += 5;
printf("%d\n", total);→ 아무 값(쓰레기 값)에서 시작해서 엉뚱한 합이 나와요
int total = 0;처럼 처음 값을 넣어요.
Java·C#은 이런 코드를 컴파일 오류로 막아 줘요.
언어마다 다른 점
Python은 문자열과 수를
Python은 문자열과 수를
+로 바로 잇지 못해요("Lara " + 10 → TypeError: can only concatenate str (not "int") to str).str(age)로 바꾸거나 f"{name} {age}"를 써요.