구하고자 하는 수의 보수에 1을 더해주는 방식으로 구한다.
0010 1010 = 42
1101 0101 + 1 -> 1101 0110 = -42
두 수를 더하면 1000 0000이 되고 첫번째 비트는 부호 비트이므로 무시한다.
소문자 : 키워드 대부분, 변수(속성), 함수(메서드)
대문자 : 커스텀타입(클래스, 구조체, 열거형), 프로토콜
Int : 정수타입 -> 8바이트
Float : 실수타입/부동소수 타입 -> 6자리/4바이트
Double : 실수 타입 -> 15자리/8바이트 (Swift에서 주로 사용)
Character : 문자
String : 문자열 (Swift에서 주로 사용)
Bool : true or false를 저장
타입 주석 : var name: String = "홍길동"
타입 추론 : var name = "홍길동"
타입 안정성 : var number = 12 (Int)
number = 3.14 (Double) -> 할당되지 않는다.
기존 선언되어 있는 타입, 내가 만든 타입 등에서 새로운 이름을 붙여 가독성을 높인다.
typealias Name = String -> String을 Name이라고 할 수 있다.
개 념 | 정 의 | 예 시 |
---|---|---|
키워드 | 약속어 - 의미있는 단어로 사용하기로 약속한 단어 | var, let, for, true |
리터럴 | 문자(데이터) 그 자체 | "홍길동" (문자열 리터럴) 3.14 (Double 리터럴) |
식별자 | 변수, 상수, 함수 정의 타입의 이름 | var "name" = "홍길동" |
표현식 | 값, 변수, 연산자 조합으로 하나의 결과값으로 평가되는 코드 단위 | number + 7 |
문장 | 특정작업을 실행하는 코드 단위 | print(name) |
나누기 연산자(/) : 정수끼리는 몫 **Double(4/5) != Double(4) / Double(5)
복합 할당 연산자 : value += 10 [-=, *=, /=, %=]
비교 연산자 : 10 <= n <= 100 -> (10 <=n) && (n<= 100)
논리 연산자 : !, ||, &&
삼항 연산자 : conditioin(Boolean) ? print("참") : print("거짓")
범위 연산자 : 1...(정수 1 이상), 1...10(정수 1이상 10이하), 1..<10(정수 1이상 10미만)
패턴매칭 연산자 : 1...9 ~= age 오른쪽에 있는 표현식이 포함되는 지에 따라 Boolean 리턴
var num = 104
switch num {
case let x where x % 3 == 0:
print("0")
case let x where x % 3 == 1:
print("1")
case let x where x % 3 == 2:
print("2")
default:
break
}
원하는 연관된 데이터의 조합으로 저장
let iOS = (language: "swift", version: 5.3)
// iOS.0, iOS.version 으로 접근 가능
switch iOS {
case let (_,y) where y == 5.3:
print("최신 버전입니다.")
fallthrough
case ("swift",_) :
print("언어: swift")
default:
break
}
최신 버전입니다.
언어: swift
for i in stride(from: 1, to: **15, by: 2) {
print(i) // **15미만, 1~13까지 출력
}
continue : 반복문에서 다음 주기로 넘어가서 계속함을 의미
break : 반복문을 아예 중지
for j in 1...5{
for _ in 1...j {
print("🐰", terminator: "")
}
print()
}
🐰
🐰🐰
🐰🐰🐰
🐰🐰🐰🐰
🐰🐰🐰🐰🐰
for j in (1...5).reversed() {
for _ in 1...j {
print("🐰", terminator: "")
}
print("")
}
🐰🐰🐰🐰🐰
🐰🐰🐰🐰
🐰🐰🐰
🐰🐰
🐰
for i in 1...5 {
for j in 1...5 {
if i > j {
print(" ", terminator: "")
} else {
print("🐰", terminator: "")
}
}
print("")
}
🐰🐰🐰🐰🐰
🐰🐰🐰🐰
🐰🐰🐰
🐰🐰
🐰
for i in (1...5).reversed() {
for j in 1...5 {
if i > j {
print(" ", terminator: "")
} else {
print("🐰", terminator: "")
}
}
print("")
}
🐰
🐰🐰
🐰🐰🐰
🐰🐰🐰🐰
🐰🐰🐰🐰🐰