6.1 while 반복 루프에서 scanf()의 반환값 사용하기
scanf함수의 반환값은 입력받은 것의 갯수가 몇개인지 리턴값으로 돌려준다는점에 주의
6.2 의사 코드 Pseudo Code
사람이 직관적으로 이해할수 있도록 말로 코드를 풀어쓴것
이하의 예시 참조
6.3 진입조건 루프 while
while 사용시 주의점
-while은 왠만해서는 {}로 묶을것
-while 의 조건부분 뒤에 바로 ;를 붙이면 안됨.
6.4 관계 연산자
사실상 파이썬 관계연산자와 똑같아서 정리할 부분이 없다.
6.5 사실과 거짓
관계식에서 중요한점은 관계식(expression)이 값(value)를 가진다는 것이었다.
0은 False이며 그 이외의 값들은 True라는 식으로 기억 해둘 것
6.6 _Bool 자료형
C언어는 불은 내부적으로 정수형으로 처리함.
불리언을 선언하는 방법에는 _Bool boolean_true = {2>1}을 쓰는 방법과 #include<stdbool.h>를 한뒤 bool bt = true; 와 같이 쓰는 방법이 있다.
6.7 관계 연산자의 우선순위
www.tutorialspoint.com/cprogramming/c_operators_precedence.htm
Operators Precedence in C - Tutorialspoint
Operators Precedence in C Operator precedence determines the grouping of terms in an expression and decides how an expression is evaluated. Certain operators have higher precedence than others; for example, the multiplication operator has a higher preceden
www.tutorialspoint.com
6.8 for 루프 소개
c에서의 for는 기본적으로 이렇게 작동한다.
상세한 예시는 이하 참조
6.9 for 는 유연해요
본강의에서는 모든 예제를 알려줄수가 없다 이후 알고리즘등을 풀면서 살펴볼것
6.10 다양한 대입 연산자들 (그리고 어셈블리 코드 확인법)
en.cppreference.com/w/c/language/operator_precedence
C Operator Precedence - cppreference.com
The following table lists the precedence and associativity of C operators. Operators are listed top to bottom, in descending precedence. Precedence Operator Description Associativity 1 ++ -- Suffix/postfix increment and decrement Left-to-right () Function
en.cppreference.com
어셈블리를 확인하고 싶다면 디버거를 실행후 확인하고 싶은 부분에서 우클릭후 Go To Disassembly로 가면 된다.
6.11 콤마 연산자
for의 조건부분에서 콤마를 써서 조건을 여러개 나열 가능하다.
(printf의 콤마(,)는 연산자가 아니라 단순 seperator임에 주의)
콤마연산자도 sequencepoint 로 작동한다.
콤마연산자로 표현된 expression은 가장 오른쪽에 있는값이 전체 연산의 값이다.
(대입연산자(=) expression의 값은 대입된 값이었던 것을 기억)
int my_money = 123, 456; 는 에러가 뜨지만
int my_money = (123, 456); 는 괜찮다. 그이유는 괄호로 묶어서 콤마연산자 expression이 되기 때문. 대입은 위의 예시와 마찬가지로 가장 오른쪽인 456이 들어간다.
6.13 탈출조건 루프 do while
do while 의 기본적인 작동법은 이하와 같다.
6.15 중첩된 루프들
루프는 중첩해서 사용이 가능하다.
6.16 배열과 런타임 에러
scanf("%d", &my_numbers[0]); 는 scanf("%d", my_numbers); 와 같다. 이유는 지난 4.1강의 에서 나왔듯. my_number를 배열로 선언하면 my_numbers 자체가 메모리 주소이기 때문에 &를 쓸이유가 없음.
다만 배열의 특정 인덱스에 접근할때는 scanf("%d", &my_numbers[1]); 이나 scanf("%d", &my_numbers[2]);처럼사용해야함.
런타임에러는 문법오류로 잡히지 않아서 컴파일 까지는 되지만 프로그램을 실행할때 문제가 발생
컴파일 타임에서 발생하는 문제는 대부분 문법문제
또한 배열크기를 넘어서는 인덱스에 접근하려하면 out of bounds 에러 발생
6.17 for 루프를 배열과 함께 사용하기
for와 배열은 이하와 같이 쓰면 편리하다.
6.18 루프 안에서 함수의 반환값 사용하기
특정변수가 선언된 공간{}에서만 해당 변수를 사용할 수 있다는 점에 주의
이하의 예시 참조
다른공간에서 선언된 변수는 다른 변수로 친다.
이하의 예시 참조
또한 C에서는 함수를 프로토 타입으로 분리가 가능하다(=선언먼저 하고 함수의 내용은 나중에 작성)
이하의 예시참조
'TIL > 따배씨' 카테고리의 다른 글
문자 입출력과 입력 유효성 검증 (2021-01-12) (0) | 2021.01.12 |
---|---|
분기 (2021-01-11) (0) | 2021.01.11 |
연산자, 표현식, 문장 (2021-01-07) (0) | 2021.01.07 |
문자열과 형식 맞춘 입출력 (2021-01-05) (0) | 2021.01.05 |
데이터와 C언어 (2021-01-04) (0) | 2021.01.04 |
댓글