최근 수정 시각 : 2024-11-20 22:51:44

==

1. 프로그래밍2. 위키의 목차3. 피곤한 눈의 이모티콘

1. 프로그래밍

프로그래밍 언어 문법
{{{#!wiki style="margin: -16px -11px; word-break: keep-all"<colbgcolor=#0095c7><colcolor=#fff,#000> 언어 문법 C(포인터 · 구조체 · size_t) · C++(자료형 · 클래스 · 이름공간 · 상수 표현식 · 특성) · C# · Java · Python(함수 · 모듈) · Kotlin · MATLAB · SQL · PHP · JavaScript · Haskell(모나드)
마크업 문법 HTML · CSS
개념과 용어 함수(인라인 함수 · 고차 함수 · 람다식) · 리터럴 · 상속 · 예외 · 조건문 · 참조에 의한 호출 · eval
기타 #s-1 · === · deprecated · NaN · null · undefined · 배커스-나우르 표기법
프로그래밍 언어 예제 · 목록 · 분류 }}}

프로그래밍 언어에서 등호는 대입과 비교(조건문에서 동치)의 용도로 쓰인다. BASIC과 같은 일부 프로그래밍 언어는 두 경우 모두 등호 하나(=)로 통일해서 쓰지만, C언어와 같은 또 다른 일부 프로그래밍 언어는 둘을 구분해서 쓴다. 이 경우 대입은 등호 하나로, 동치는 등호 둘(==)로 쓴다. PHPJavaScript 같은 언어에서는 이 동치를 또 세분화해서, ==로는 값만 같은지 비교하고(equality) 등호 세 개(===)는 자료형까지 완전히 같은지(identity) 비교하는 연산자로 사용한다.

==의 반대(not equal)는 !=이고[1], PHP에서 ===의 반대(not identical)는 !==이다.

C언어 계열에서 동치의 경우, 등호의 값이 참이면 그 값은 1을 가지며, 거짓일 경우 0을 가진다. 예를 들어, A=B 와 A==B의 차이는, A=B는 B의 값을 A에 대입하라는 의미며, A==B는 A와 B의 값이 같을 경우 A==B란 식 자체의 값이 1(True)의 값을 가지며, A와 B의 값이 다를 경우 A==B란 식 자체가 가지는 값이 0(False)이라는 뜻이다. 자바에서는 0, 1 대신 false/true라는 boolean값을 가진다.[2]

PHP에서 등호 2개와 3개의 차이는 여기에 나온 표를 보자. !=이면 완전히 다르게 취급하는 경우, ==이면 A==B는 true이지만 A===B는 false인 경우, ===이면 A==B와 A===B 모두 true가 되는 경우다.

프로그래밍을 처음 배우는 사람들이 자주 실수하는 부분 중 하나며 조건문이나 반복문 안에 == 대신 =를 써놓으면 참/거짓 연산이 안되어 의도한 대로 조건선택이 안되거나 무한반복에 빠지기 때문에 버그가 생긴다. ;를 빼먹으면 컴파일이라도 안 되지, ==대신 =를 쓰는 경우는 컴파일이 그냥 되어버려서[3] 컴파일러가 warning을 띄워주지라도 않으면 잡기 힘들다.

이와 같은 실수를 줄이는 방법 중 하나로, 상수와의 값 비교에서 상수를 등호의 왼쪽에 놓는 요다 조건문(Yoda conditions)[4]이라는 코딩 방식이 있다. 이를테면 a == 1이라는 문장을 1 == a로 적는 것. 혹시라도 ==를 =로 잘못 적었을 경우 a = 1은 논리적으로 가능하지만, 1 = a는 상수인 1에 새로운 값을 대입해 변경하는 대입 연산자(=)가 적용될 수 없으므로 컴파일 에러가 나며, 프로그래머 입장에서는 실수한 부분을 쉽게 잡을 수 있다. 문제인 부분이라면 가독성이 떨어진다고 느낄 수 있다는 점이다.

if문에서 의도적으로 =를 사용하는 경우도 있다. C 계열 언어에서 Python에서 쓰이는 것과 비슷한 input 함수를 만들어 사용하는 때인데, 비교보다 대입이 먼저 실행되어야 하므로 괄호를 사용해 (a = input()) == 3이라고 쓴다.[5] a = input() == 3라고 쓰면 비교연산이 먼저 실행돼 a에 입력값이 3이면 1/true, 아니면 0/false가 들어가게 된다.

Haskell에서는 ==가 내장 연산자가 아니라 라이브러리 함수이다. ==는 타입 클래스 Eq의 메서드이고 해당 타입에서 Eq 인스턴스를 구현하면 메서드 ==를 사용할 수 있다.
class Eq a where
  (==) :: a -> a -> Bool

2. 위키의 목차

위키에서는 목차 머릿글 양쪽에 등호를 집어 넣어서(ex) == 가나다라 ==) 쓴다. 등호의 개수는 목차 단계를 의미(나무위키에서는 6개까지 가능)하며 양쪽의 등호 수가 모두 같아야 한다. 2019년 6월 12일부터는 편집 지침에서 문단 1단계를 완전히 금지 사안으로 넣으면서 최상위 단계가 == ABCD ==로 되었다.#

3. 피곤한 눈의 이모티콘

=_= , = = 등등 여러 가지 바리에이션이 있으며 뭔가 피곤한 눈이나 뚱한 표정을 표현할 때 주로 쓰는 이모티콘이다.


[1] Lua에선 ~=, Visual Basic 등 몇몇 언어에서는 <>를 사용하기도 한다. Haskell에서는 /=를 사용한다.[2] 이와는 별개로 자바에서 문자열 비교에 ==를 쓸 경우 메모리 주소 차이로 같은 문자라도 false를 반환할 수 있어 문자열 비교에서는 == 대신 equals 함수를 사용해야 한다. 자바 파생 언어인 Kotlin에서는 이 문제를 해결했다.[3] 컴파일러에 따라서는 warning을 띄워 주기도 하고, Python 등에서는 아예 문법 오류가 발생한다.[4] 스타워즈의 그 요다를 뜻하는 드립이 맞으며, 작중 요다가 문장의 순서를 도치시키는 대화법을 쓴다는 점에서 착안되었다.[5] 이 구문의 의미는 a에 입력을 받아서 그 입력값이 3인지 확인하는 것이다.