본문 바로가기

분류 전체보기71

[홍정모의 따라하며 배우는 C언어] 6.10 비쥬얼 스튜디오 어셈블리 코드 확인법 겉은 다르지만 속은 같을까?int main(){ i = i + 10; i += 10;}두 개는 쓰는 방법이 다르지만 똑같은 결과 값을 가진다.그러면 속은 과연 같을까? 6번 줄에 임시 중단점을 설정빨간색 점은 만드는 법은 클릭을 하면 된다.그리고 F10 눌러준다. 그 다음 코드가 적혀 있는 곳에 오른쪽 클릭 → 디스에셈블리로 이동   이렇게 겉은 달라도 속은 같다는 것을 알 수 있다.좀 더 복잡한 식에서는 어셈블리 언어가 다를 뿐만 아니라, 속도도 차이가 있다고는 한다. 그러나 컴퓨터의 발전으로 엄청난 차이가 발생하지 않는다.따라서, 그 차이를 메꾸기 보다는 알고리즘 쪽을 건드는 것이 더 좋다고 한다. 출처:  홍정모의 따라배우는 C언어강의 외의 추가된 것들은 책 그리고 인터넷 조사해서 얻었음 2024. 10. 11.
[홍정모의 따라하며 배우는 C언어] 6.8 for 루프 소개(For Loop) 6.8 for 루프 소개(For Loop)Indefinite Loop vs Counting Loop for문이나 while문은 위의 Indefinete Loop나 counting Loop를 다 구현할 수 있다.다만, 두 루프를 구현하는 데 있어서, 어느 쪽이 더 적절한지에 따라 차이가 있다.미리 말하자면 for문은 counting Loop가 표현하기 쉽고, while문은 indefinite Loop가 쉽다.Counting 루프를 만들기 위해서는 3가지 조건이 필요하다.옆에 적혀 있는 것들은 제가 제멋대로 해석한 거임.Counter initialization - 변수 초기화반복을 통제하는 제어 변수를 초기화한다. 루프가 시작될 때 한 번만 수행한다.Counter check - 조건 확인(검사)루프를 실행할.. 2024. 10. 11.
[홍정모의 따라하며 배우는 C언어] 6.7 관계 연산자의 우선순위 우선순위가 애매하다 싶으면 그냥 마음 편하게 ()을 쓰도록 하자.int main(){ int x = 1, y = 2; x > y + 2; // +가 >보다 우선순위가 높음}따라서 y에 +2를 더하고 나서, 비교 연산자가 작동한다. 만약에 x와 y를 비교를 하고 + 2를 하고 싶다. 하면int main(){ int x = 1, y = 2; (x > y) + 2;}이런 식으로 인위적으로 추가가 가능하다.그래서 (x > y)의 값은 무엇이냐?앞 강에서 배웠던 true & false 파트에 의해 참이면 1이고 거짓이면 0이다. 따라서, 거기에 +2를 더한 값이다.값은 0 + 2인 2가 나온다.관계연산자를 복잡하게 쓸 수 밖에 없는 상황이 일어나는데, 그 때에는 () 을 명확하게 쓰고, 주석을 남기도록하는 습관을.. 2024. 10. 11.
[홍정모의 따라하며 배우는 C언어] 6.6 _Bool 자료형(Boolean Data Type) _Bool 자료형(Boolean Data Type)▶ C++에서는 Bool 자료형이 따로 있다. 따라서 따로 선언하지 않아도 true와 false의 키워드가 존재함.C99 이전에는 Bool 타입 자료형을 따로 정의하고, 써먹었다고 한다.예를 들어#include int main(){ int _true = 1; int _false = 0;}이렇게 일일히 1과 0을 할당하고 참과 거짓을 표현했다고 한다.C99 이후에는 _Bool이라는 새로운 타입이 생겼다.#include int main(){ _Bool _true = 1; _Bool _false = 0;}사실 겉 표면에는 int와 _Bool이 엄청난 차이가 있는 지는 모르겠다.그런데 속 내부에는 중요한 차이가 있다고 한다.int는 4byte로 참과 거짓을 표현.. 2024. 10. 11.