durams
@durams
수강평 작성수
-
평균평점
-
게시글
질문&답변
Q. 15:30, 부호가 있는 8비트 정수 질문
안녕하세요? 질문&답변 도우미 durams입니다.어떠한 비트 패턴이 있을 때 signed로 해석해야할 지 unsigned로 해석해야할 지 어떻게 판단하느냐는 말씀이시죠? 어떤 데이터 타입에 저장되었느냐에 따라 다르게 해석됩니다.예를 들어 unsigned char에 10011110이 저장되면 맨 왼쪽의 비트(MSB; Most Significant Bit)를 2^7 = 128이라고 해석하구요, signed char에 같은 패턴이 저장되면 MSB를 -2^7 = -128이라고 해석합니다.
- 1
- 2
- 18
질문&답변
getchar(), putchar()
안녕하세요? 질문&답변 도우미 durams입니다.해당 코드에서 while문은 버퍼에서 꺼낸 하나의 문자가 개행 문자인지 확인하고, 개행 문자가 아닌 경우만 출력합니다. 만약 개행 문자를 만나게 되면 ch에 저장만 하고 출력은 하지 않습니다. 마지막의 putchar(ch)는 ch에 마지막으로 저장된 개행 문자를 출력하기 위함입니다.해당 줄을 주석 처리하고 실행해서 비교해 보시면 뭐가 다른지 눈치채실 수 있으실겁니다.
- 1
- 3
- 35
질문&답변
교재 있나요?
안녕하세요? 질문&답변 도우미 durams입니다.따로 교재는 없습니다만, 교수님께서 강의를 제작하실 때 https://www.learncpp.com/ 을 주로 참고하신 것으로 알고 있습니다. 이외에 https://cppreference.com/ 도 문서화가 잘 되어있으니 참고하며 공부하시면 될 것 같습니다.
- 1
- 2
- 38
질문&답변
강의자리ㅛ
안녕하세요? 질문&답변 도우미 durams입니다.죄송하게도 강의자료는 별도로 제공되지 않습니다. 개인적인 조언이라면, 직접 강의를 들으며 이해한 내용을 요약하고 정리해서 노트 등을 작성해보시는 것을 추천드립니다. 능동적으로 강의에서 소개되는 내용을 실습하는 것에 더불어 직접 내용을 조리있게 정리하게 되면 공부 효과가 좋습니다.
- 1
- 2
- 44
질문&답변
11:11 부근에 Something::temp와 Something::getValue의 앞에 &를 붙이는 이유가 뭔가요? (함수 이름은 포인터(주소)가 아닌가요?)
안녕하세요? 질문&답변 도우미 durams입니다.모든 함수 포인터가 자동으로 pointer로 decay되는것은 아닙니다. C언어에서는 함수 이름 식별자가 암시적으로 포인터로 decay되는것이 일반적이지만, 클래스가 존재하는 C++에서는 비정적멤버 함수의 경우 어느 클래스의 멤버함수인지, 그리고 어느 인스턴스에서 호출되었는지 그 정보가 필요합니다. 어느 클래스인지는 함수 포인터의 타입으로, 어느 인스턴스인지는 호출 시 지정하게 됩니다.또한 비정적 멤버 함수의 경우는 함수 포인터 정의 시 &가 무조건 필요합니다.&를 붙이지 않았을 때에도 에러 없이 정상 작동한다고 하셨지만, 혹 함수가 static으로 되어있지는 않은지 확인이 필요합니다. 대신 정적 멤버 함수는 일반 함수와 동일하게 취급되며, &가 없어도 괜찮습니다.비정적 멤버 함수에 &를 붙여야 하는 이유는 C++에서 추가된 멤버 함수를 명확하게 처리하기 위함이며, 일반 함수와 정적 멤버함수에는 &를 명시적으로 붙이지않아도 되는 이유는 전통적인 C 구문에 대한 하위 호환성이라고 알려져 있습니다. . C++ draft에는 아래와 같이 작성되어 있습니다.A pointer to member is only formed when an explicit & is used and its operand is a qualified-id not enclosed in parentheses.함수 이름은 포인터가 아닌 것이지 않냐?는 질문에는... 둘은 원래 같지 않습니다. 배열과 포인터가 엄밀히 같지 않은 것처럼요. 함수의 이름은 컴파일러에 의해 함수가 위치한 주소로 변환될 뿐입니다.
- 1
- 3
- 42
질문&답변
using namespace std; 선언 후에 std::를 하는 이유가 궁금합니다
안녕하세요? 질문&답변 도우미 durams입니다.강의에서 사용하신 이유는 아마 교수님께서 명확성을 나타내기 위함이라고 생각됩니다. 다만 ::이 단순히 명확성을 나타내는것 외에도 정말로 필요한 경우가 존재합니다.예를 들어, algorithm 헤더에는 std::sort라는 정렬 함수가 존재하는데요, 아래와 같이 sort라는 변수를 사용자가 정의해버리면 컴파일러는 sort가 둘 중 어느것인지 판단하지 못합니다.#include #include using namespace std; int sort = 20; int main() { cout 위 같은 경우에는 std::sort로 작성하면 algorithm 헤더의 sort를 사용할 수 있고, ::sort로 작성하면 사용자가 작성한 글로벌 네임스페이스의 sort 변수를 사용하게 되는 것이죠.
- 1
- 2
- 41
질문&답변
비주얼스튜디오코드로 공부해도 상관없나요?
안녕하세요? 질문&답변 도우미 durams입니다.네 상관 없습니다. 다만 Visual Studio Code의 경우 Visual Studio보다 직접 환경 설정해줘야 하는 부분이 약간 더 있습니다. 편한 대로 선택하시면 됩니다.
- 1
- 2
- 79
질문&답변
소스파일안에 여러 파일
안녕하세요? 질문&답변 도우미 durams입니다.네 문제없습니다. 다만 지금 말씀하신 '소스파일'이 혹시 main 함수와 같은 엔트리 포인트를 가진 파일을 말씀하시는거라면, 그건 불가능합니다. 엔트리 포인트는 한 프로젝트에 하나만 존재할 수 있습니다.
- 1
- 2
- 52
질문&답변
F5와 F7의 차이
안녕하세요? 질문&답변 도우미 durams입니다.해당 단축키들은 C언어의 단축키라기보다는 정확히는 Visual Studio의 단축키라고 보시면 되겠습니다.F5는 '디버깅하며 실행' 하는 단축키로, 코드 변경 사항이 있었다면 해당 부분에 대한 빌드를 선행하고 이후 디버깅하며 실행합니다.F7은 '솔루션 빌드' 단축키로, 실행은 하지 않습니다. 변경된 코드에 대해서만 빌드를 부분적으로 진행합니다.항상 F5를 먼저 할 필요는 없으며, 둘은 확연히 다른 동작을 하기 때문에 필요에 따라 선택하시면 됩니다. 빌드 과정이 제대로 이루어지는지만 빠르게 알고 싶다면 f7을 사용해도 되지만, 에러는 빌드 과정과 런타임 각각에서 발생할 수 있기 때문에 결국 프로그램이 제대로 동작하는지 확인하려면 실행을 해봐야합니다.ctrl + alt + f7(Rebuild solution)과 ctrl + f5(Start without debugging)도 유용하게 사용되는 단축키들이니 알아두시면 좋을 것 같습니다. 디버깅을 하지 않고 단순 실행만 할 때는 ctrl + f5를 추천드립니다.
- 1
- 2
- 45
질문&답변
c = TWO * (a+b); 에서 a와 b는?
안녕하세요? 질문&답변 도우미 durams입니다.이번 강의에서 소개된 개념은 Value category라고 하는 것인데요, 이름은 value category지만 사실 값을 분류하는 것이 아닌 expression (표현식)을 분류하는 개념입니다. 그러니 단일 키워드에 대해서만 적용되는 분류 기준이 아닌 것이죠.괄호 안의 a와 b 각각은 lvalue가 맞습니다. a와 b라는 식별자는 변수로써 메모리를 점유하고 있기 때문입니다.TWO * (a + b)는 rvalue가 맞습니다. 변수 c에 담기는 것과 별개로, 해당 expression의 결과는 임시로 존재하는 rvalue입니다.강의에서는 간단히 lvalue가 메모리를 차지하고 있는 객체라고 표현되었지만, 대부분의 경우에 맞는 설명입니다.
- 1
- 2
- 40




