묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
필수 실습문제 1
안녕하세요독하게 시작하는 C언어 프로그래밍 필수 실습문제 1번 질문있습니다. 문제는 나이와 이름을 입력받아 출력하는 문제인데요저는 이름을 입력받을 문자배열을 선언할때 어떤 길이가 나올지 모르니 최대한 많은 공간을 미리 확보하기 위해 char ch[ ] = {0}; 으로 선언했는데 이렇게 하면 오류가 뜨고 선생님처럼 char ch[32] = {0}; 문자배열의 길이를 선언해야 오류 없이 실행되더라구요문자배열을 어느 길이로 입력 받을 지 모르니 저처럼 설정하면 왜 안되는 걸까요? 또한 scanf_s("%d%c", %x); 구문에서 입력받은 변수가 int 형으로 정수를 입력 받았는데그럼 scanf_s("%d%d", %x); 이렇게 입력해야 맞는 것 아닌가요?왜 scanf_s("%d%c", %x); 이렇게 입력해도 실행이 되는 지 궁금합니다
-
해결됨독하게 시작하는 C 프로그래밍
선생님 질문 있습니다.
매번 질문에 답해주셔서 너무 감사합니다이번 내용 이해하기 쉽게 해주셔서 머리에 쏙쏙 들어왔습니다.혹시 이 코드들 중에 문법적으로 오류나 아니면 이렇게 하는 습관(?)은 안 썼으면 하는 게 있으시다면 알려주세요! 미리 감사드립니다.😊
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
코어와 하이퍼스레드 관계 질문
안녕하세요. 코어와 하이퍼스레드간의 명령어 처리개수에 대해 궁금한점이 있어서 질문드립니다. 빠른 CPU를 위한 설계기법 챕터에서 하드웨어 스레드라고 설명주신 하이퍼스레드기술이 적용된 CPU는 4코어 8스레드의 경우, 8개의 명령어를 한 번에 처리할 수 있다고 말씀을 주셨습니다. 근데 제가 기존에 알고있던 하이퍼스레드의 경우 CPU내의 다양한 유닛들 (ALU, FPU 등) 중 잉여자원이 있을시 이를 끌어다가 대신 활용하는 방식으로 알고있습니다. 즉 경우에 따라서 자원이 남아있다면 사용할 것이고 부족하다면 사용하지 못할텐데 ( 설령 자원이 있더라도 유닛의 목적과 다른 기능을 한다면 정상적인 성능을 뽑아낼지도 의문이긴 합니다. ) 이를 8개의 명령어를 처리할 수 있다고 봐도될지 궁금합니다. 질문을 좀 정리하면 제가 이해한 방식이 하이퍼스레딩, 즉 하드웨어 스레드가 맞는걸까요 ?하이퍼 스레드가 적용된 4코어 8스레드 CPU의 경우 8개의 명령어가 아닌 '최대' 8개의 명령어까지 처리할 수 있다고 보면될까요 ?2번 항목에 의해 8개의 명령어를 처리할 수 있다고 했을때 8코어 8스레드와 동일한 수준으로 봐도 될지 궁금합니다.
-
해결됨독하게 시작하는 C 프로그래밍
한 솔루션 안에 여러 프로젝트
강사님 안녕하세요 항상 질좋은 강의 감사드립니다.올려주신 예제파일처럼 한 솔루션 파일 안에 여러 프로젝트를 넣는 방법은 무엇인지 궁금합니다.프로젝트를 생성하면 아예 새로운 솔루션으로 생성이 되어버려서요,,
-
미해결독하게 시작하는 C 프로그래밍
필수실습문제-버블정렬 설명에 대한 질문
강사님께서 설명하시는 버블정렬에 대한 설명을 듣고 질문 드립니다.해당 영상의 초기 부분에 버블정렬에 대해 설명을 해주시는데, 해당 설명이 버블정렬에 대한 설명이 맞는지 문의드립니다.설명해주신 내용은 선택 정렬이 아닐까 생각이 듭니다.버블정렬은 맨 왼쪽 부터(작은수) 정렬되는 것이 아닌 가장 오른쪽(큰 수)부터 정렬이 되는 것으로 알고 있습니다.1회차에서 가장 큰 값이 정해지고 그 다음 회차를 반복하면서 그 다음 으로 큰 수가 정해지는 방식으로 알고 있는데요, 그런데 영상 속 설명에서는 가장 왼쪽 값(작은 수)가 정해지면 1회차가 종료되며, 그 뒤에 그 다음으로 작은 수를 구하는 방식으로 진행하는 것으로 설명하는 것으로 보입니다.확인 부탁드립니다감사합니다. 참조 링크: https://ko.wikipedia.org/wiki/%EB%B2%84%EB%B8%94_%EC%A0%95%EB%A0%AC
-
해결됨독하게 시작하는 C 프로그래밍
필수 실습문제 '*' 출력놀이 응용 부분 관련 질문
#include <stdio.h>int main(void){ for (int i = 0; i < 5; ++i){for (int j = 0; j < 5; ++j){if (i + j < 4)printf(" ");elseprintf("*");} printf("\n");}for (int i = 0; i < 5; ++i){for (int j = 0; j < 9; ++j){if (i + j < 5 || j - i > 5)printf(" ");elseprintf("*");} printf("\n");} return 0;}이런 식으로 코드를 짰는데 제가 보기엔 제 코드에 문제가 없는데 삼각형 문제에서 출력 결과가 사진과 같이 나와요 i가 4이고 j가 8일 때 왜 "*"이 아닌 " "가 출력 되는지 모르겠어요.
-
해결됨독하게 시작하는 C 프로그래밍
이 부분에 오류가 있는지 궁금합니다.
제가 문제를 풀다 보니 이런 식으로 항A 값에 식을 만들어 버렸습니다.오류 없이 잘 진행되고 값도 잘 나오고 해서 문제 없다고는 생각합니다만혹시 제가 모르는 오류가 있을까봐 질문드립니다.미리 감사드립니다 ^^
-
해결됨독하게 시작하는 C 프로그래밍
정수형 - char
기초적인 질문이지만..char의 음수부분 어떤때에 사용하는지 궁금합니다.char 의 양수 번호같은 경우는 ascii코드 베이스로 사용하는걸 알겠는데 음수부호를 가지고 char를 사용하게 되는 경우는 어떨때 사용하는걸까요? 그리고 어떤때에 unsigned char를 사용해야하는가도 궁금하네요..ㅎ
-
해결됨독하게 시작하는 C 프로그래밍
buffer란 H/W인가요 S/W 인가요?
강의에서 buffer란 ram의 일부분에 속해 있다고 하셨는데 후에 "hello world"를 print하는 과정에 대해 설명하실 때 file(인터페이스)에 buffer 공간이 있다고 하셔서 헷갈립니다
-
해결됨독하게 시작하는 C 프로그래밍
예제 파일은 어디서 다운 받을 수 있나요?
예제 파일은 어디서 다운 받을 수 있나요?
-
해결됨독하게 시작하는 C 프로그래밍
Little-Endian에 대해서 궁금합니다.
제가 이해한 대로 말씀드리자면 저희가 사용하는 intel의 cpu가 기본적으로 Little-Endian 방식을 채택한다고 하셨습니다.제가 사용하는 AMD의 cpu도 메모리 주소가 반대로 찍힙니다 그럼 AMD도 Little-Endian을 채택하는 것으로 이해하고 있으면 될까요??
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
FTA 파일 시스템에 대한 질문입니다.
안녕하세요 강사님!좋은 강의 잘 듣고 있습니다.이번에 마지막 강의인 파일 시스템을 수강하던 도중 질문이 생겨서 글을 작성하게 되었습니다.FTA 파일 시스템의 경우 기존 연결 할당 방식의 단점들을 해결한다는 말씀을 해 주셨습니다.연결 할당 방식의 문제로는 반드시 처음부터 접근을 해야 한다는 것블록에 오류가 발생하였을 때, 추후의 블록을 읽을 수 없다는 점입니다.그렇다면 FTA가 Table을 도입함에 따라 위 2가지 문제를 해결한 방식이 다음과 같은지 여쭤보고 싶습니다.Table을 참조하여 특정 파일의 중간 블록부터 읽을 수 있기 때문에, 첫번째 문제는 해결했다고 볼 수있다.블록에 다음 블록의 정보를 저장하지 않기 때문에, Table의 정보만 유효하다면, 다음 블록의 정보를 읽는데에는 문제가 없다. 좋은 강의 만들어 주셔서 감사합니다.
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
Working set 기반 프레임 할당 방식에 대한 질문입니다.
안녕하세요 강사님유익한 강의 감사히 듣고 있습니다.이번에 가상 메모리의 프레임 할당 방식에 대한 강의를 듣던 도중 working set 기만 모델에 대해 질문이 생겼습니다.사실 동적 할당 방식에 대한 질문이라고 볼 수도 있을 것 같은데,working set의 경우, 일정 시간을 두고, 참조되는 페이지를 통해 working set을 구성하여 프로세스에 프레임을 할당한다고 하셨습니다.그렇다면, 해당 프로세스가 가장 처음 실행이 될 때는 해당 프로세스에 대한 프레임 할당이 어떤식으로 이루어 지는지 궁금합니다.정적 할당의 경우에는 실행하기 전, 프로세스의 크기를 통해 미리 결정하고 들어가지만, 동적 할당의 경우에는 해당 프로세스를 실행하여 사용되는 프레임의 수를 통해 프레임을 할당한다고 하셨습니다.그렇다면 가장 초기에는 어떤식으로 프레임이 할당이 되어 지는지 궁금합니다. 감사합니다.새해 복 많이 받으세요~
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
동기화 질문입니다.
안녕하세요! 강의 정말 유익하게 잘 듣고 있습니다.이번에 동기화 단원을 듣게 되면서, 몇가지 궁금증이 생겨서 질문을 하게 되었습니다. A 프로세스 혹은 쓰레드가 임계구역에서 작업을 수행하고 있었다고 가정을 하겠습니다. 이때 cpu가 지정한 타임 슬라이스를 초과하여 cpu를 사용하였고, 임계 구역에서의 진행이 완료되지 않은 상태로 타이머 인터럽트가 발생하였다고 가정을 하겠습니다. 이러한 상황에서 만약 새로운 프로세스 B가 해당 임계구역에 접근을 하게 된다면, 이에 대한 부분은 어떻게 처리가 되는 것인지 궁금합니다. 기존의 공유 자원이 업데이트 되지 않은 상태로 진행이 되게 되면, 분명히 레이스 컨디션이 발생할 수 도 있다고 생각이 듭니다. 세마포의 경우에는 임계 구역에 진입할 수 있는 프로세스의 개수, 즉 사용 가능한 공유 자원의 개수를 전역변수로 설정하여 여러 개의 공유자원을 관리할 수 있다고 하셨습니다. 그렇다면 세마포의 경우에는 각 공유자원의 종류에 따라 구분하여 관리는 할 수 없는 것인지 여쭤보고 싶습니다. 이것이 세마포의 단점? 이 되는 것인지 궁금합니다. 운영체제는 처음 공부해 보는 것이라서 질문이 좀 난잡하고 불명확할 수 있다는 점 죄송합니다.열정적인 강의 덕분에 재미있게 공부를 할 수 있는 것 같습니다!항상 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
예제 다운 후 한글 깨짐
안녕하세요, Visual Studio 2022 Community 버젼을 사용하고 있는데 다운 후 파일들을 보니깐 파일이 깨져 있는데 혹시 해결법이 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
PDF관련 질문
PDF 파일 다운받기 위해 유튜브 멤버십 가입 후 다운로드를 마쳤습니다 강의 제목중 강의자료 PDF 포함 그리고 인쇄용 흑백자료 포함 예제파일 포함이라고 나와있는건 교재용 PDF파일과 예제용 PDF 파일을 참고하며 수업진행해야한다는 뜻일까요?
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
FIFO second-chance와 LRU의 성능 차이가 나나요?
안녕하세요 강의 잘 듣고 있습니다.페이지 교체 알고리즘 중 가장 오래 사용되지 않은 페이지의 스왑 아웃과 먼저 들어온 페이지들 중 참조되지 않은 페이지를 선별하여 스왑아웃 하는 것이 결과적으로 비슷한 결과가 나올 거 같은 생각이 들었습니다.제가 잘 이해한 게 맞다면 예시로 들어주신 참조열 2313523423의 경우에도 두 방식이 동일하게 2, 1, 5를 스왑 아웃 하는 결과가 나오는 듯 합니다.이 둘의 사용성에 대한 더 구체적인 차이를 알 수 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
교재 chapter 11장 5번 연습문제 관련 질문
안녕하십니까? 강사님교재 chapter 11장 5번 연습문제를 풀기 위해 coding을 했습니다. 프로그램은 작동 하는데 첨부 화면캡처 사진 14번행에 밑줄이 생겼는데 읽어봐도 무슨 말인지 알수가 없습니다.설명을 부탁드려도 될까요?혹시 저 밑줄을 없앨 수 있는 방법이 있을까요?수고하십시오
-
해결됨독하게 시작하는 C 프로그래밍
변수들이 stack frame에 할당되는 구조에 대하여
우선 강의 내용 정말 만족하면서 잘 듣고 있습니다.섹션 16의 "가변 길이 입력에 대한 stack frame 손상" 강의편에서Callee로 GetString 함수를 활용하여 디버깅 모드로 메모리 주소를추적하는 과정에서 질문드려요.스택 구조는 높은 메모리 주소에서 낮은 메모리 주소 방향으로할당 받는 구조로 알고 있는데, char 배열이 int형 변수보다낮은 메모리 주소에 할당이 되어서 질문 드립니다.제가 따로 여러 변수들을 적용하여 디버깅 해보았는데도 마찬가지더라고요.혹시, os에 따라 변수가 할당되는 스택 메모리의 순서가 다른건지 궁금해서 질문드려요.
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
오퍼랜드에 길이 제한이 있는 이유가 무엇인가요?
안녕하세요 선생님. 데이터가 커지면 오퍼랜드에 담을 수 없기 때문에, 다른 메모리나 레지스터에 데이터를 넣고 해당 주소 위치를 오퍼랜드에 담는 것이라는 걸 이해했습니다. 그런데 데이터를 어디에 넣든 컴퓨터가 감당해야할 데이터 크기의 절댓값은 같지 않나요?다른 메모리나 레지스터는 담을 수 있는 데이터를 왜 오퍼랜드는 못 담는 거죠? 명령어에 할당된 데이터 크기 자체가 작은 건지, 작다면 왜 작은 건지 여쭤봅니다.(수정)4강에서 피연산자는 레지스터로부터 받아들인다는 내용을 들으니 알 것 같습니다.오퍼랜드 필드가 레지스터 내에 존재하기 때문에 크기 제한이 생기는 것 맞을까요?