월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
2.3 고정 너비 정수
이 수업에서 몇 가지 질문들이 있습니다ㅠ int8_t은 아마 platform에서 8bit(1byte)짜리 data type으로 바꿔주는 기능으로 예상됩니다.그런데 여기에 커서를 갖다대면, typedef signed char int8_t 으로 나옵니다...여기서 헷갈리는 이유가 나머니 int16_t은 integer이였지만 이건 char이기 때문입니다.이것이 char인 이유는 단순히 사이즈가 1바이트 때문인가요? 2분 55초 쯤부터 선생님께서 int_fast8_t은 integer 중에서 8bit(1바이트) 사이즈 중에 처리하는 속도가 가장 빠른 data type이라고 하셨습니다.그런데 int_fast8_t에 커서를 갖다대면 signed char라고 뜹니다... 선생님께서 "integer 중에서"라고 하셨는데 잘못 말씀하신 건가요? character 중에서 가장 빠른 data type이라는 뜻인가요? char에는 signed와 unsigned 둘 다 있는데 int8_t와 int_fast8_t 둘 다 signed char로 뜹니다...혹시 무조건 고정 너비 정수들에는 무조건 signed char만 있는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
2.1 자릿수 맞춰주는 것
26분 정도에 선생님께서 float fValue = 3.141592f;double dValue = 3.141592;cout << fValue << endl;cout << dValue << endl; 이것을 출력하면 둘 다 3.14159가 나오고, 이렇게 나오는 이유는 cout에서 출력할 때 자릿수를 맞춰주려기 하기 때문라고 하셨습니다.이 자릿수를 맞춰준다는 것이 무엇을 의미하는지 잘 모르겠습니다ㅠㅠ
- 해결됨홍정모의 따라하며 배우는 C++
1.14 #define
10:20 정도에#define LIKE_APPLEint main(){#ifdef LIKE_APPLEcout << "Apple" << endl;}이 상황일 때define은 뒤의 macro를 그 뒤의 걸로 교체해준다고 했는데#define LIKE_APPLE 뒤에는 아무것도 없으니 #ifdef 뒤의 LIKE_APPLE을 빈칸으로 교체해주는 건가?NO!#ifdef LIKE_APPLE 같이 preprocessor 라인 안에서는 교체 안 한다.라고 하셨습니다.그럼 만약, preprocessor 라인이 아니라 cout << LIKE_APPLE; 같이 평범한 라인일 경우 빈칸이 출력되나요?
- 해결됨홍정모의 따라하며 배우는 C++
1.14 Conditional Compilation을 많이 쓰는 경우
선생님께서 8:50 정도에,Conditional Compilation을 많이 쓸 때는 이 프로그램이 build 시작하기 전에 윈도우즈든지 리눅스든지 좀 알고 시작하자 이럴 때라고 하셨습니다...그런데 이게 무슨 뜻인지 잘 모르겠는데 혹시 구체적으로 설명해주실 수 있으실까요?ㅠㅠ
- 해결됨홍정모의 따라하며 배우는 C++
1.14 algorithm
선생님께서std 안에 max가 있고 max는 algorithm이라는 라이브러리 안에 있다고 하셨습니다. 여기서 namespace std랑 라이브러리가 좀 헷갈리기 시작했습니다...전 현재 어떻게 이해한 상태이냐면,지난 강의에서 선생님께서 iostream을 open document를 통해 namespace가 있고 그와함께 cin, cout 등이 있다는 것을 보여주셨습니다.그래서 iostream library > namespace standard(std)> cin, cout으로 이해했습니다.그런데 갑자기 max는 또 algorithm이라는 라이브러리에 있는데 또 namespace standard(std) 안에 있다고 하시니 헷갈립니다...namespace standard(std)은 모든 라이브러리에 있는 것인가요? 저는 iostream 라이브러리 안에만 있는 것다고 생각했습니다....
- 미해결홍정모의 따라하며 배우는 C++
1.13 MySpace1::InnerSpace::my_function();에 관하여
namespace MySpace1{ namespace InnerSpace { int my_function() { return 0; } }}using namespace std;int main(){ using namespace MySpace1; MySpace1::InnerSpace::my_function(); return 0;}여기서 선생님께서 main function에서 my_function()에 접근하려면 MySpace1::InnerSpace::my_function();으로 적어야 한다고 설명해주셨습니다.여기까지는 확실하게 이해했습니다.그런데 여기서 1가지 의문점이 생겼습니다.main function에서 using namespace MySpace1;을 적어주었기 때문에 MySpace1::InnerSpace::my_function();이 아니라InnerSpace::my_function();으로 적어야 하지 않나요?어떤 게 맞는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
1.13 using namespace MySpace1;에 관하여
using namespace std;int main(){ using namespace MySpace1; doSomething (3, 4); //cout << MySpace1: :doSomething (3, 4) << endl; //cout << MySpace2: :doSomething (3, 4) << endl; return 0;}안녕하세요? 선생님께서 main function 안에 using namespace MySpace1; 을 적어두면 MySpace1: :doSomething (3, 4)로 적을 필요 없이 그냥 doSomething (3, 4);로 적어도 된다고 설명해주셨습니다.여기까지는 확실하게 이해했습니다.그런데 MySpace2 안에 들어있는 doSomething의 경우, MySpace1 안에 없기 때문에 사용하려면 MySpace2: :doSomething (3, 4) 식으로 적어야 한다고 생각하는데 혹시 이것 외에도 MySpace2 안에 들어있는 doSomething을 쓸 수 있는 방법이 있나요? int main(){ using namespace MySpace1; using namespace MySpace2; doSomething (3, 4); doSomething (3, 4);return 0;}이렇게 적으면 안되는 거죠?
- 미해결홍정모의 따라하며 배우는 C++
1.12 헤더가드에 관하여
선생님께서 add.h 파일에#ifndef MY_ADD#define MY_ADDint add(int x, int y){ return x + y;}#endif이렇게 #ifndef, #define, #endif 를 추가하는 것을 가르쳐주셨습니다.이것들의 뜻은MY_ADD가 이미 정의되었다면, 아래에 있는 부분들을 정의하지 마라.include가 이미 되어있다면, 아래에 있는 부분들을 다시 include 하지 마라.라고 설명하셨습니다.여기서 살짝 헷갈리는 부분들이 있습니다.MY_ADD는 정확히 어떤 것을 의미하는 것일까요? add.h 파일 자체를 의미하는 건가요? 헤더가드의 뜻이 include가 이미 되어있다면, 아래에 있는 부분들을 다시 include 하지 말라는 뜻이라고 하셨는데 include의 대상은 이 헤더가드가 입력되어 있는 파일(여기서는 add.h)를 의미하는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
저도 저도 리뷰요!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 일케해도 문제 없죠?
- 미해결홍정모의 따라하며 배우는 C++
13.4 if문
강의 13.4에서 2분 30초쯤에T가 char타입일 때 어떤 동작을 더 추가해서 실행하기 위해서 컴파일 타임에 해야 되기 때문에 if문을 사용할 수 없다고 하셨는데템플릿 매개변수는 컴파일 타임에 다 정의되어야 한다고 이해했는데 그러면 왜 if문으로 쓸 수 없나요?밑에 코드처럼 작성하면 되지 않나요??template<typename T> T getMax(T x, T y) { if (std::is_same<T, int>::value) { // x와 y가 int 타입인 경우에 대한 동작 // ... } else if (std::is_same<T, double>::value) { // x와 y가 double 타입인 경우에 대한 동작 // ... } else { // 기타 타입에 대한 동작 // ... } return (x > y) ? x : y; }
- 미해결홍정모의 따라하며 배우는 C++
1.5 복습문제
선생님께서 이걸 복습으로 만들어보라고 하셨습니다.숫자 2개를 입력 받아서 그 더하기를 출력하는 프로그램 만들기그걸 function로 쪼개서 숫자 2개를 사용자로부터 여러 번 입력을 받고그 더하기를 여러 번 출력하는 것 만들어보기. int addTwoNumbers(int a, int b){ return a + b;}int main(){ int c, d; cin >> c >> d; int sum = addTwoNumbers(c, d); cout << sum << endl; return 0;} 이렇게 만들었는데 이게 선생님께서 원하시는 것일까요?ㅠ
- 미해결홍정모의 따라하며 배우는 C++
1.5 void 함수
15:00 부근에서 선생님께서 "이 void function는 기능을 수행하기 때문에 main function한테 다시 return해줄 게 없다"고 하셨는데 살짝 헷갈려서 질문드립니다! void function은 출력을 하기 때문에 메인 함수에 리턴 해줄 것이 없다는 것은 확실히 이해했습니다.근데 이것을 기능을 수행한다고 표현하셔서 헷갈리는데 그럼 일반적으로 리턴하는 함수(ex 2개의 수를 더하는 함수)들은 기능을 수행하지 않는다고 보시는 건가요? 그렇다면 이 일반적인 함수들은 무엇을 한다고 표현해야 하나요?
- 해결됨홍정모의 따라하며 배우는 C++
매개 변수 / 인자 / 인수
안녕하세요?선생님께서 설명해주셔서매개변수(parameter)와 argument(인수)의 차이점은 확실히 이해했습니다.그런데 여기서 <인자>라는 용어가 또 나오는데 인자는 매개변수와 인수와 어떻게 다른 건가요?인자와 다른 것들의 차이점이 궁금합니다!
- 미해결홍정모의 따라하며 배우는 C++
메모리 주소
int x;x = 123;이 상황에서 &x를 출력하면 16진수로 이루어진 x의 주소를 알 수 있습니다.12:35 부근에서,선생님께서 프로그래머가 123 숫자에 대한 주소를 갖고 오기가 어렵다고 하셨는데,이것에 대한 질문을 해보았더니, 답변해주신 분께서"literal을 할당한 변수의 주소 (&x)는 알아낼 수 있어도literal 123의 주소를 직접적으로 알아낼 수 없습니다."라고 합니다....그런데 literal을 할당한 변수의 주소와 literal 123의 주소의 차이점을 모르겠습니다...ㅠㅠㅠㅠ
- 미해결홍정모의 따라하며 배우는 C++
13:00쯤에서 getline 이슈
#include <iostream> #include <string> using namespace std; int main() { // CASE 1 cout << "Your name?: "; string name; // std::string cin >> name; // NO white space; jack jack cout << "Age?: "; string age; cin >> age; // jack cout << "CASE 1 " << name << " & " << age << endl; cout << endl; // CASE 2 cout << "Your name?: "; string name2; // std::string std::getline(std::cin, name2); cout << "Age?: "; string age2; std::getline(std::cin, age2); cout << "CASE 2 " << name2 << " & " << age2 << endl; cout << endl; return 0; } >> Your name?: jack Age?: 1 CASE 1 jack & 1 Your name?: Age?: 2 CASE 2 & 2 안녕하세요, 위 코드를 입력하면 CASE1에서 엔터치면, CASE2에서 name2는 그냥 넘어가 age2와 같은 값을 갖게 되는 이유가 무엇인가요? 제가 추론하기로는, cin >> age에서, ">>" operator가 age의 string만 읽고 delimiter인 line breaker를 buffer로 가지고 있는 것 같습니다. 그래서 std::getline에서 delimiter(즉, remaining line breaker)를 읽는 것 같습니다.그런데 name2는 어떻게 age2와 같은 값을 갖게 되는지 전혀 모르겠습니다.
- 미해결홍정모의 따라하며 배우는 C++
4.5 강의: int -> float type conversion은 4byte니까 문제 없나요?
int iii = 1234; float ff = iii; cout << std::setprecision(12) << ff << endl; 위 예시를 보여주신 의도를 알고 싶습니다
- 미해결홍정모의 따라하며 배우는 C++
Something class 안에잇는 B 클래스속 m_b는 출력을 어떻게해야하나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 아래에 동일질문들이 보이지만 뚜렷한 답변이 없는거같아서 질문드립니다. class안에 있는 class속 m_b를 출력하기위해 B란 클래스속에 print_B라는 함수를 만들어봤지만 int main에서 B 안에 print_B() 함수를 어떻게 들어가야할지 모르겠습니다. something속 print()함수는 som.print()로 들어가지니까 B class 속 print_B는 som.m_b.print_B()로 해야할거같은데 안되네요.제코드는 이렇습니다.
- 미해결홍정모의 따라하며 배우는 C++
솔루션폴더안에 프로젝트 폴더에 직접적으로 cpp파일을 넣어줘도 비주얼스튜디오 source files에는 cpp파일이 뜨질않습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.cpp파일을 다른 프로젝트폴더로 옮기고 싶어서 솔루션폴더안에 직접적으로 넣어줬는데 비주얼스튜디오에선 보이질않네요.vs코드에선 폴더안에 파이썬코드를 넣어주면 vs코드 프로그램에서도 자동으로 파일이 업데이트됐는데 비주얼 스튜디오는 안되는건가요?
- 해결됨홍정모의 따라하며 배우는 C++
3.6 논리연산자 9분 55초
x = 5, y = 5의 경우x equals y가 출력되는데, 선생님께서 x와 y가 같다고 잘못 결과를 내고 있다고 하시는데...왜 결과가 잘못 나온 건가요?ㅠㅠx와 y가 똑같이 5인데 뭐가 잘못된 건지 잘 모르겠습니다ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C++
(person 구조체의 주소)와 (person구조체의 주소를 넣어준 포인터를 다시 ref2에 넣었을때 주소)하고 같은게 이해가 가질 않습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.처음 Person 구조체를 선언하면 구조체가 담길 주소가 할당되고 (편의상 a라고 하겠습니다.)구조체의 주소를 담을 *ptr을 선언하면 포인터 그자체의 주소도 새로 생긴다고 배웠는데 (포인터의 주소는 b) 처음 구조체의 주소를 넣은 포인터라해도 그포인터의 주솟값을 다시 ref2에 넣어준다면 a라는 주소가 아닌 b가 나와야하는거 아닌가요? 어떻게 ref2에도 a라는 주소가 들어가있는건지 궁금합니다.