묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결정혜경 판타스틱 자료구조 in C
17강 알고리즘 문제풀기(Editor)에서 질문있습니다.
안녕하십니까 강사님 강의 듣고있는 수강생입니다.알고리즘 문제풀기(Editor)강의에서 질문있어서 게시판에 글남깁니다.저는 명령어를 입력하는단계에서 for문과 if문을 활용하였는데 첨부드린 사진처럼 for문의 반복횟수가 5번을때는 두번의 L명령어만 실행이됩니다.for문의 반복횟수를 10회이상으로 늘렸을때는 답이 나오는데 무엇이 문제인지 모르겠습니다. fscanf함수를 활용하였는데도 개행문자를 읽는것 같기도 해서 한번 봐주시면 감사하겠습니다..
-
미해결혼자 공부하는 C 언어 저자에게 배우는 C 언어의 모든 것
반환값이 없는 함수 사용에 대하여
반환값이 없는 함수에 나온 예제를 그대로 실행시켜봤는데#include<stdio.h>void print_char(char ch, int cnt){ int i; for (i = 0; i < cnt; i++); printf("%c", ch);}int main(){ print_char('*', 5);}코드를 실행시켰습니다.근데 결과물이 *****이 나와야할거같은데결과가 * 하나만 나와요 뭐가 잘못된건가요?
-
미해결홍정모의 따라하며 배우는 C언어
visual studio 2022, mac에서는 c/c++ 지원이 안되나요?
제목과 동일합니다.visual studio 2022에서 맥은 c/c++지원이 안 된다는데 사실인가요? 그럼 visual studio code로 실습해도 괜찮을지 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C언어
(강의 10:21) 배열의 이름 dest에 "Start something"을 대입하는 것이 안되는 이유
강의 10: 21부분입니다.교수님께서 61번째 문장 dest = "Start something"; //Error에서 에러가 발생한다고 말하셨는데, 어째서 에러가 발생하게 되는 것인지 잘 모르겠습니다.error C2106: '=': left operand must be l-value빌드를 실행해보면 왼쪽은 l-value로서 작동해야한다고 합니다.이미 공간(주소)을 할당받은 배열 dest가 있고,배열의 이름 dest, 즉 포인터에다가, (수정불가능한/읽기만 가능한 프로그램 코드에 있는) "Start something"이라는 문자열의 주소를 대입함으로서 그걸 수정(?)하려 시도했기에 에러가 발생하는걸까 싶기도 하고.. 머릿 속의 개념이 꼬여버렸습니다.※그치만 이것이 안되는 경우는,'포인터로 정의한 문자열이 있을 때 포인터를 통해 인덱싱하여 값을 수정하려고 했을 때" 문제가 발생하는 경우였습니다.이번 dest = "Start something"; //Error의 경우에 해당하진 않을 것 같습니다.
-
미해결홍정모의 따라하며 배우는 C언어
디버깅을 하면 VS가 응답 없음이 되어버립니다
구글링을 통해 나온 방법들을 적용해 보았으나 상황이 변하지 않습니다 어떻게 해야 할까요?
-
미해결홍정모의 따라하며 배우는 C언어
[보충] 메모리를 OS에게 반납한다는 표현
강의 노트 작성이 안되어서 여기에 적습니다. 참고하세요.[보충]1. 제가 강의에서 메모리를 운영체제에게 반납한다라고 간단하게 말씀드리고 있는데 내부적으로는 조금 더 복잡하고 오해의 여지도 있어서 추가적으로 설명을 드리겠습니다.일단, 운영체제가 우리의 프로그램에게(보다 구체적으로는 process에게) 메모리를 줄 때는 가상 메모리(virtual memory)라는 개념을 사용합니다. 이때 우리의 컴퓨터에 꽂혀있는 실제 메모리 카드를 사용할지 아니면 (다른 프로그램이 메모리를 쓰고 있어서 실제 메모리 카드의 용량이 부족한 경우에) 하드디스크 같은 다른 저장공간을 사용할지는 OS와 연관된 문제가 됩니다. 우리 프로그램이 받은 메모리가 만약 실제 메모리 카드가 아니라 하드디스크를 가상 메모리로 받은 것이라면 아무래도 처리 속도가 느려지겠지요.C언어의 free()에 대해서 검색하다 보면 "메모리를 운영체제에게 반납하지 않는다"라는 얘기가 나옵니다. 제가 사용한 "운영체제에게 반납한다"라는 표현과 반대로 보이지만 사실은 같은 얘기입니다. 운영체제 입장에서는 당장 다른데 쓸 일이 없으면 "혹시 네가 다시 필요할 수도 있으니까 가상 메모리는 일단 가지고 있어"라는 라면서 그냥 둔다는 의미입니다. 그렇지만 실제 메모리는 운영체제가 다른 프로그램에게 쓰라고 줘버렸을 수도 있습니다.C에서는 free()한 메모리를 다시 사용하지 말라고 신신 당부를 하는데요, 만약에 정말로 프로그램이 실제 메모리를 계속 가지고 있는 거라면 주의하라고 할 이유가 없겠죠. 정리하겠습니다. 저는 여러분께 보다 쉽게 설명드리기 위해서 운영체제가 메모리를 다른데 쓸 수 있다는 의미에서 반납했다라고 말씀을 드렸고 그 의미를 조금 더 설명드렸습니다. 다른 프로그래머들과 의사소통을 하실 때에는 "메모리를 반납했다"라는 표현보다는 "메모리를 해제(deallocate)" 했다라는 표현을 더 많이 사용합니다.참고자료1. "Even if the pages are still remaining in the ownership of this process, but not being used, the actual RAM can be used by another process. So it's not a big deal if the pages haven't been released for some time."참고자료2. Learn C The Hard Way p 80, "you use free to return it to the OS so that it can be used by other programs."참고자료3. "the memory could have been returned to the operating system (a "page" of memory that you're no longer using can be removed from your address space, so there is no longer any memory available at that address - essentially an unused "hole" in your application's memory)." "This is why it is important to make sure you don't use a pointer after freeing the memory it points at."
-
해결됨홍정모의 따라하며 배우는 C언어
0.10 17:00 경 8비트 정수의 범위에 대한 질문
안녕하세요, 강의를 잘보고 잘 이해하고 있다고 생각하고 진행하고 있습니다만, 의문점이 생겼습니다.8비트 정수의 범위를 설명해주실 때부호가 있는(signed) 정수일 경우 범위를 -128 ~ 127로표현해주셨는데요.분명 128의 숫자는 2진수로 표현하였을 때 1000 0000이 맞습니다.이걸 알려주신 '2의 보수' 표현법으로 -128을 나타내면1000 0000 -> 0111 1111 이 되고 +1을 하면1000 0000가 됩니다만 앞선 설명에서는 첫번째 비트공간을음수,양수를 판별하기 위해 사용되는 자리라고 설명해주셔서그렇게 생각하고 있었습니다만 이렇게 될 경우8비트 이니까 128의 2진수인 1000 0000에서 맨앞에 1이 부호를 표현하는 자리이기 때문에 짤리고 000 0000 으로 표현되는 것 이 아닌가요?그렇게 되면 "부호가 있는 정수"의 범위일 경우000 0000 ~ 111 1111(127)이 된다는 건데 뭔가 이상하고그렇다고 1000 0000 을 -0으로 치부해 버리면0을 '2의 보수' 계산법을 통해 계산하였을 경우 똑같이-0 이나 0이나 같은 0000 0000 값이 나와서 이상하고그냥 -128의 경우 +128이나 -128이나 2진수가 같기 때문에 이럴경우는 1000 0000 일때 000 0000 이여도 -128로 정해둔 것 인가요? 아니면 다른 이유가 있을까요?
-
미해결홍정모의 따라하며 배우는 C언어
(2:49) 코드의 진행 방식이 머릿속에서 꼬여버려서 while문을 추가하였을 때, 정상적으로 출력되는 이유를 모르겠습니다.
디버그를 해보았는데도 이해가 되질 않아 질문을 올립니다.둘 다 실행했을 때, y입력 후 엔터를 쳤다고 가정하고제 나름대로 작동 순서를 글로 작성해보았습니다.1번째 코드 (while문, continue 없음)이것이 처음 작성한 코드입니다.ex) y 입력 후 엔터"Current count is 0. Continue? (y/n)" 출력 후 입력 대기→ y 입력 후 엔터if문에서 입력한 문자 'y'와 n을 비교한다. [검사]n이 아니므로 빠져나오지 않고 count++ 실행"Current count is 1. Continue? (y/n)" 출력 후 입력 대기→ (버퍼에 있던 \n)if문에서 입력한 문자 \n과 n을 검사하여 통과 [검사]count++실행"Current count is 2. Continue? (y/n)" 출력 후 입력 대기2번째 코드 (while문, continue 추가)이것이 두번째 작성한 코드입니다.ex) y 입력 후 엔터"Current count is 0. Continue? (y/n)" 출력 후 입력 대기→ y 입력 후 엔터if문에서 입력한 문자 'y'와 n을 비교한다. [검사]n이 아니므로 반복문(while(1))을 빠져나오지 않는다.while(2)문에서 y 검사(참) → continue 실행 [무시]while(2)문에서 \n 검사(거짓) → 빠져나옴count++ 실행"Current count is 1. Continue? (y/n)" 출력 후 입력 대기if문에서 입력한 문자 '\n'과 n을 비교한다. [검사]if문을 빠져나와 while문의 조건(거짓)을 만족시키지 못한다.count++ 실행"Current count is 1. Continue? (y/n)" 출력 후 입력 대기------------------------------1. 2번째 코드에서 while(2)문과 continue;의 조합으로 작성한 코드가 어째서 '첫번째 글자를 제외한 나머지를 버퍼에서 싹 지워주기 위함'인지 잘 모르겠습니다.결과적으로 while문-continue는 첫번째 글자 포함, 그 이후 글자까지 무시한 후 \n은 false이므로 아무 작용을 하지 못하는 것이 아닌가 싶습니다.→결국 2번째 반복(cycle)에서 버퍼에 남아있는 \n을 if문에서 판단하고, 결국 1번째 코드와 동일하게 작동하는 것이 아닌가요?
-
미해결홍정모의 따라하며 배우는 C언어
형식 지정자
int32_t를 출력할때 PRI32를 사용하는이유가 형식 지정자를 알수가 없다고했는데int32_t는 32비트를 사용하니까 4바이트이고 그러면 그냥 %d를 사용하면되는거 아닌가요?
-
미해결홍정모의 따라하며 배우는 C언어
size_t
sizeof 함수가 size_t를 반환한다는 소리가 무슨 말인가요?
-
미해결홍정모의 따라하며 배우는 C언어
int_least_t
이번 강의에서 배운 int_least8_t, int_fast_f 등등과 같은것들은 많이 사용되는 것들인가요?
-
미해결홍정모의 따라하며 배우는 C언어
sizeof 연산자 관련 질문입니다.
안녕하세요! 강의를 보면 1:48에 sizeof에 마우스를 갖다 대면 '4U(4 바이트)'라고 뜨는데, 저는 4Ui64라고 뜹니다. 뒤에 더 붙은 i64는 뭔지 궁금해요!
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
질문드립니다
숫자를 입력하면 빙고! 이후에도 숫자에는 동물의 이름이 들어가지 않습니다 ㅠ
-
미해결홍정모의 따라하며 배우는 C언어
맥 os 에서의 vscode
안녕하십니까 교수님 다름이 아니라 맥북으로 비주얼 스튜디오 코드를 이용해 c언어를 익히고 싶은데 초기설정에서 계속 헤매고 있습니다. 혹시 관련 자료가 있다면 알려주시면 감사할것 같습니다
-
미해결홍정모의 따라하며 배우는 C언어
2:46 getchar 질문
yes \n 를 쳤다고 하면 if문에서 y일 때, n이 아니니 while문으로 넘어가고 여기에서 y는 \n와 다르므로 다시 while문으로 갈테고, 이와 같이 e s도 \n와 다른데 마지막 \n == \n이니 count++로 넘어가서다시 출력 되는거라고 생각됩니다. 그런데 두번째 문자인 e에 대해서는 다시 if문에서 부터 루프를 돌리지 않아도 되는건가요?
-
해결됨홍정모의 따라하며 배우는 C언어
[(16. 전처리기와 라이브러리) - 11. inline 함수] inline function의 assembly code질문 (강의 10분 18초)
안녕하세요. inline function의 assembly code에 call 이 나오는 문제 때문에 질문드립니다! 현재 visual studio 2022 community 최신 버전을 사용하고 잇습니다. 또한, 해당 강의대로 inline function expansion을 only _inline 으로 설정했습니다. 하지만 assembly code를 보면, inline function expansion을 disable 했을 때와 차이가 없습니다. Visual Studio 2019 Community에서도 그러합니다. 작성한 code는 강의대로, 아래와 같습니다. #include <stdio.h> inline int foo() { return 5; } // Driver Code int main() { int ret; // Inline Function Call ret = foo(); // Breakpoint printf("Output = %d\n", ret); return 0; } 어떻게 해야 강의의 10:18 에서와 같이, assembly code로 봤을 때, foo()의 function call없이, mov dword ptr [ret],5만 확인할 수 있을까요?
-
미해결
서울시뉴딜일자리_IT인턴 3개월 [급여월260만]지원사업안내_빅데이터 기반 서비스플랫폼 과정 [스터디,프로젝트,프론트엔드,백엔드,자바,코딩]
서울시에서 뉴딜일자리사업 일환으로 2차 서비스플랫폼개발자 양성과정으로 사전 교육 후 3개월 인턴십 (급여 월 260) 보내주는 프로그램 진행중인데 신청해보세요! 자세한 내용은 https://blog.naver.com/kjc_sh/222775806456 참고해주세요
-
해결됨홍정모의 따라하며 배우는 C언어
[(15. Bit Manipulation) - 8. RGBA 색상 비트 마스크 연습문제] Alpha의 값이 255일 때, float로 왜 1.0인가요?
강의 2분 50초부터 2분 55초 구간에 'float로 변환하면, 1.0이 될겁니다.'라고 하셨습니다. 각각의 color channel에 대한 data type은 unsigned char이므로, 8 bits의 size를 가지고 있습니다. 그러므로 만약 '255'라는 10진수를 저장한다면, binary data는 1111 1111 입니다. 그런데 이 binary data가, 어떻게 float type의 '1.0'을 의미하는 것인지 모르겠습니다. 32 bits size를 가지는 float type으로 casting하면, 0000 .... 1111 1111 (32bits) 이므로 '255.0'이 나옵니다. 혹시 8-bit 부동소수점 숫자로 표현한다는 것을 말씀하신것인가 싶어서, 1111 1111 라는 binary data를 8-bit 부동소수점 수로 직접 계산해보니 -1 * 16 * 1.9375 = -31이 나옵니다. (Format : Sign 1 bit, Exponent 3 bits, Fraction 4 bits) 어떤 과정으로 인해서 alpha channel의 data인 '255', 즉 binary data 1111 1111 이 '1.0'이되는 것인가요?
-
해결됨홍정모의 따라하며 배우는 C언어
프로그램이 파일의 EOF를 어떻게 찾나요?
챕터 8.9 10:30 안녕하세요~ 강의 잘 듣고 있는 중에 궁금한게 있어서 질문합니다! while (( c = getc(file)) != EOF) 17번째 줄 코드인데요. 코드 뜻은 파일 내용 중 EOF를 만날 때까지 문자 한 개씩 변수 c에 대입이잖아요? 근데 텍스트 파일에 EOF를 적어주지도 않았고, 보이지도 않는데 어떻게 프로그램이 EOF를 인식할 수 있는건가요?
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
scanf_s(" %d", &answer); 이후 바로 종료
이후 printf로 정답, 오답 여부가 안나오는데 뭐가 문제일까요? 검색으로 입력버퍼도 찾아봤는데 해결이 안되네요.