월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C++
2.5 소수점 뒤가 0일 때
안녕하세요?이상하게도, 어떤 변수의 type을 double이나 float로 설정하고 5.0으로 초기화해준 후 변수를 출력시키면 소수점 뒤가 잘리고 5가 출력됩니다...하지만 5.5 이런 식으로 초기화한 후 출력시키면 5.5로 잘 출력됩니다..왜 소수점 뒤의 0은 생략되는 것일까요?ㅠㅠ
- 해결됨홍정모의 따라하며 배우는 C++
2.5 유효숫자란?
선생님께서 후반에float f(123456789.0f) 속에는 유효숫자(significant digit)이 10개 있다고 하셨습니다.유효 숫자가 정확히 뭔지 모르겠습니다ㅠ인터넷에도 검색해보았는데 명확한 해설이 나오지 않는 느낌입니다...혹시 유효 숫자의 의미랑 이것이 가지는 중요성을 여쭤볼 수 있을까요?ㅠ
- 미해결홍정모의 따라하며 배우는 C++
2.5 literal이 float로 간주되는 경우
12분 30초 정도에 선생님께서int main() {using namespace std;float f(3.141592f);double d;long double ld;return 0; } 에서여기서 float면 3.141592뒤에 꼭 f를 붙여야 하는데 f를 안 붙이면 안의 literal은 double인데 C언어 또는 C++에서는 double을 float로 강제로 바꾼다 라고 하셨습니다.여기서 좀 헷갈립니다...저는 지금까지 float면 f를 확실하게 붙여야 하고, 붙이지 않으면 double로 간주된다고 알고 있었습니다.그런데 선생님 말씀대로라면, 앞의 type를 float로 적은 상황에서, 뒤의 수는 f를 붙이지 않아도 C++에서 자동으로 float로 바꾼다고 하셨으니 f가 있든 없든 float로 컴파일되는 게 아닌가요?ㅠ 뒤의 literal이 double이 되려면, 앞의 type을 double d(3.141592) 이런 식으로 적지 않는 이상 방법이 없다는 걸로 이해하면 될까요?ㅠ
- 해결됨홍정모의 따라하며 배우는 C++
2.5 long double의 크기
int main() {using namespace std;float f;double d;long double ld;cout << sizeof(float) << endl;cout << sizeof(d) << endl;cout << sizeof(ld) << endl;return 0;}안녕하세요? 수업에서 이것을 출력했더니, double 과 long double이 둘 다 8이 나왔습니다. 수업에서 long double의 최소 크기가 8바이트이며, 8, 12, 16 바이트가 전형적인 크기라고 하셨습니다. 그런데 여기서 출력한 결과는 8인데, 혹시 8이 나온 특별한 이유가 있나요? 아니면 그냥 일반적으로 그냥 출력시키면 8이 나오는 것인가요? 12와 16이 아닌 8바이트가 나온 이유를 여쭤보고 싶습니다.
- 미해결홍정모의 따라하며 배우는 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; 위 예시를 보여주신 의도를 알고 싶습니다