{ }codelper

배우기 › C#

기초 · 02

변수와 값

값에 이름을 붙여 두고 다시 쓰거나 바꿔요.

변수는 값에 붙인 이름표예요.
아래 예제는 이름과 나이를 변수에 넣어 찍고, 나이를 1 늘려 다시 찍어요.

using System; class Program{    static void Main()    {        string name = "Lara";        int age = 10;        Console.WriteLine(name + " " + age);        age = age + 1;        Console.WriteLine(age);    }}
stdout
Lara 10
11

핵심

  • =는 "같다"가 아니라 "오른쪽 값을 왼쪽 이름에 넣어라"예요.
    그래서 age = age + 1이 말이 돼요.
  • 어떤 언어는 변수를 만들 때 타입(정수, 문자열 등)을 적어요.
    어떤 언어는 값이 자기 타입을 알아서 적지 않아요.
  • 바꾸지 않을 값은 상수로 만들어요.
    상수에 다시 넣으면 오류가 나요.
  • 정수에는 담을 수 있는 크기가 있어요.
    32비트 int는 2,147,483,647(약 21억)까지라, 더 큰 수는 64비트 정수(약 922경까지)를 써요.

언어별로 쓰는 법

Pythonage = 10 — 타입을 적지 않아요.
상수 문법이 없어서 MAX_SCORE처럼 대문자 이름으로 약속만 해요.
정수 크기에 제한이 없어요.
바꾸기는 a, b = b, a
JavaScriptlet age = 10, 상수는 const(다시 넣으면 실행 중 TypeError: Assignment to constant variable.).
수는 2^53(약 9×10^15)까지만 정확해요.
바꾸기는 [a, b] = [b, a], 문자열 안에 넣기는 ${age}
TypeScriptlet age: number = 10 — 타입을 안 적어도 값을 보고 짐작해요.
상수 const에 다시 넣으면 컴파일 오류.
나머지는 JavaScript와 같아요
Javaint 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)
Cint age = 10;, 문자열은 const char *(또는 char 배열).
상수는 const, 큰 수는 long long.
바꾸기는 임시 변수로.
문자열과 수는 printf("%s %d\n", name, age)처럼 자리에 넣어요
Craykonage = 10; — 타입을 적지 않고, 상수는 없어요.
수는 2^53까지 정확해요.
바꾸기는 임시 변수로.
나는 키워드라서 변수 이름으로 못 써요

자주 하는 실수

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#은 이런 코드를 컴파일 오류로 막아 줘요.

블록 안에서 처음 만든 변수를 밖에서 썼어요Craykon

만약 (참) {
    y = 1;
}
콘솔.쓰기(y);

→ "'y'은(는) 아직 만들지 않은 이름이에요" 오류

블록보다 앞에서 y = 0;으로 먼저 만들어요.
(Python은 블록 밖에서도 보여요.)

언어마다 다른 점
Python은 문자열과 수를 +로 바로 잇지 못해요("Lara " + 10 → TypeError: can only concatenate str (not "int") to str).
str(age)로 바꾸거나 f"{name} {age}"를 써요.

연습 문제