월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
5.10강 '++'를 넣어도 '+'로 인지되는 문제
안녕하세요, 아래 코드를 작동하던 중, op에 ++를 입력하여도 +로 입력받는 현상이 있습니다. 이유를 모르겠습니다.감사합니다#include <iostream> using namespace std; int getInt() { cout << "Enter int: "; int x; cin >> x; std::cin.ignore(32767, '\n'); return x; } char getOperator() { cout << "Enter op: "; char op; cin >> op; std::cin.ignore(32767, '\n'); return op; } void printResult(int x, char op, int y) { if (op == '+') cout << x + y << endl; else if (op == '-') cout << x - y << endl; else { cout << "Invalid op" << endl; } } int main() { int x = getInt(); char op = getOperator(); int y = getInt(); cout << x << op << y << endl; printResult(x, op, y); return 0; } >> Enter int: 234 Enter op: ++ Enter int: 3434 234+3434 3668
- 해결됨홍정모의 따라하며 배우는 C++
강의 들으면서 궁금증이 생겼습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 함수의 매개변수로 배열이 오는 경우 doSomething(int students_scores[20] 처럼, 함수 정의에서 나타나는 students_scores가 내부적으로 포인터로 인식한다고 했는데, 그렇다면 이 함수내에서 students_scores는 배열의 시작주소만 있을 뿐 이 배열의 크기가 얼마나 될지 몰라서, 만약 int형 배열 20개를 doSomething의 인자로 집어넣을 경우, 배열의 size인 20도 같이 넣어줘야 한다고 봐도 될까요? 왜냐하면 만약 doSomething내부적으로 size인자도 같이 안넘길경우, size범위를 초과하면 오류가 생길 수도 있으니깐요.. 맞게 해석한지 궁금합니다!
- 미해결홍정모의 따라하며 배우는 C++
-98 출력하는 방법
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 98 -> 0110 0101이고-98 -> 2의 보수를 취해서 1001 1100 인데int a = 1001 1100을 선언하고cout으로 출력하면 -98이 아닌 156이 나옵니다.앞에 최상위 비트를 부호로 인식하게 해서출력하는 방법이 어떻게 되나요??
- 미해결홍정모의 따라하며 배우는 C++
6.6 C언어 스타일의 배열 문자열 - strcmp 구현
- 맞게 잘 구현했을까요 ?
- 미해결홍정모의 따라하며 배우는 C++
2.5 연습문제 추가질문
선생님께서 연습문제로 주신 것 중에 이것들을 과학적 표기법을 이용해서 바꿔보라고 하신 게 있습니다.0.0010000.0000000001234560000.000질문 도우미 선생님께서1.000e-31.0e-102.3456e8이렇게 바꿔주셨습니다.그런데 관련해서 몇 가지 질문이 있습니다ㅠ1.000e-3을 출력해보면 0.001이 나오는데 이러면 0.001 뒤에 있는 000이 안 나오는데 혹시 뒤의 000도 나오게 하는 방법이 있나요 아님 선생님께서 다른 의도를 갖고 0.001000으로 적으신 걸까요?이상하게도 1.0e-10을 적고 출력해보면 1.0e-10이 나옵니다... 1e-10도 적고 출력해보면 그대로 나옵니다... setprecision(11)을 설정하고 출력했는데도 그대로입니다... 이유가 뭘까요?ㅠ혹시 1e-10이랑 1.0e-10 중에 올바른 표기법이 있나요 아님 둘 다 상관 없나요?2.3456e8 도 출력해보면 234560000로 나오는데 선생님께서 주신 문제처럼 234560000.000로 출력하는 방법이 따로 있나요 아님 이렇게 출력하게 하는 과학적 표기법이 따로 있나요?
- 해결됨홍정모의 따라하며 배우는 C++
2.7 글자가 3개인데 출력을 4번 하려고 하는 경우
char c1(65); cin >> c1; cout << c1 << " " << static_cast<int>(c1) << endl; cin >> c1; cout << c1 << " " << static_cast<int>(c1) << endl; cin >> c1; cout << c1 << " " << static_cast<int>(c1) << endl; cin >> c1; cout << c1 << " " << static_cast<int>(c1) << endl; 이런 상황에서 선생님께서 글자가 3개인데 출력을 4번 하려고 하면 어떻게 되는지 복습하면서 알아보라고 하셔서 해보았습니다.abc를 입력했더니 1, 2, 3번째 c1(a, b, c)이 순서대로 출력되고 4번째 글자의 입력을 기다리는 상태가 됩니다. 혹시 제대로 된 게 맞을까요?
- 해결됨홍정모의 따라하며 배우는 C++
2.7 char type과 int type
5분 5초 정도에 선생님께서 c1, c2는 정수형에 포함되고 실제로 integer를 저장할 때 사용된다 고 하셨습니다. 이 부분이 잘 이해가 안 가는데, c1, c2 자체가 정수형을 나타낼 때 자주 쓰는 변수라는 뜻인건지 잘 모르겠습니다...ㅠ 물론 1byte짜리 아주 작은 integer를 저장하는 type이 char type 외에 없기에 char type을 integer처럼 사용하는 경우가 존재한다는 것은 확실하게 인지하고 있습니다. 근데 이것이 선생님께서 말씀하신 c1, c2는 정수형에 포함된다는 것과 관련이 있는지는 잘 모르겠습니다...
- 해결됨홍정모의 따라하며 배우는 C++
2.5 연습문제
3.14159231.410.001000123.00020.0000000001234560000.000선생님께서 이것들을 과학적 표기법으로 사용해서 바꿔보라고 하셨습니다.3141592e-63141e-21000e-61230002e-41e-10234560000000e-3이렇게 바꿔보았는데 선생님께서 원하시는 게 이런 방식인지 궁금합니다... 혹시 체크 부탁드릴 수 있을까요?0.001000 와 234560000.000 의 경우 어떻게 바꿔야 할 지 헷갈리는지 어떻게 나타내는 게 좋을까요?ㅠ
- 해결됨홍정모의 따라하며 배우는 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)를 의미하는 건가요?