묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 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로 정답, 오답 여부가 안나오는데 뭐가 문제일까요? 검색으로 입력버퍼도 찾아봤는데 해결이 안되네요.
-
해결됨리눅스 시스템 프로그래밍 - 이론과 실습
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님. 좋은 강의 잘 듣고 있습니다. 다름이 아니라 "파일 이벤트 - 라이브 프로그래밍" 에서 질문이 있습니다. 라이브 코딩을 해주시는 중에 파일 생성 삭제에 대한 이벤트 로그 출력 부분을 작성 해주셨는데요. inotify_event 포인터로 선언되어있는 event 변수를 (char *)로 캐스팅 하는 이유에 대해서 문의 드립니다. 해당 부분의 소스는 아래와 같습니다. 감사합니다. while(ret > 0){ if(event->mask & IN_CREATE) { printf("file %s is created\n",event->name); } if(event->mask & IN_DELETE){ printf("file %s is deleted\n",event->name); } ret -= (sizeof(struct inotify_event) + event->len); event = (struct inotify_event *)((char *)event + sizeof(struct inotify_event) + event->len); <-- (char *)? }
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
질문 드립니다.
안녕하세요. 8번째 챕터 진행했는데, 컴파일 에러는 뜨지 않지만 이상하게 코드가 안 돌아가서 질문 드립니다. (참고로 비주얼 스튜디오가 깔리지 않아서, DEV-C++로 하고 있어 scanf_s가 아닌 scanf로 작성하고 있습니다) #include <stdio.h> #include <time.h> #include <iostream> #include <stdlib.h> #include <string> // 10마리의 서로 다른 동물 (각 카드 2장씩) // 사용자로부터 2개의 입력값을 받아서 -> 같은 동물 찾으면 카드 뒤집기 // 모든 동물 쌍을 찾으면 게임 종료 // 총 실패 횟수 알려주기 int arrayAnimal[4][5]; // 카드 지도 (20장의 카드) int checkAnimal[4][5]; // 뒤집혔는지 여부 확인 int foundAllAnimals(); const char * strAnimal[10]; void initAnimalArray(); void initAnimalName(); void shuffleAnimal(); int getEmptyPosition(); int conv_pos_x(int x); int conv_pos_y(int y); void printAnimals(); void printQuestion(); int main(void) { srand(time(NULL)); initAnimalArray(); initAnimalName(); shuffleAnimal(); int failCount = 0; // 실패 횟수 while (1) { int select1 = 0; //사용자가 선택한 처음 수 int select2 = 0; //사용자가 선택한 두번째 수 printAnimals(); // 동물 위치 출력 printQuestion(); // 문제 출력 (카드 지도) printf("뒤집을 카드를 2개 고르세요 : "); scanf("%d %d" , &select1, &select2); if (select1 == select2) // 같은 카드 선택 시 무효 continue; // 좌표에 해당하는 카드를 뒤집어 보고 같은지 안같은지 확인 // 정수 좌표를 (x,y) 로 변환 int firstSelect_x = conv_pos_x(select1); int firstSelect_y = conv_pos_y(select1); int secondSelect_x = conv_pos_x(select2); int secondSelect_y = conv_pos_y(select2); // 같은 동물인 경우 if((checkAnimal[firstSelect_x][firstSelect_y] == 0 //카드가 뒤집히지 않았는지 && checkAnimal[secondSelect_x][secondSelect_y] == 0) && (arrayAnimal[firstSelect_x][firstSelect_y] == arrayAnimal[secondSelect_x][secondSelect_y]) ) //두 동물이 같은지 { printf("\n\n빙고! : %s 발견\n\n" , strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); checkAnimal[firstSelect_x][firstSelect_y] = 1; checkAnimal[secondSelect_x][secondSelect_y] = 1; } // 다른 동물인 경우 else { printf("\n\n 땡!! (틀렸거나 이미 뒤집힌 카드입니다)) \n"); printf("%d : %s\n" , select1 , strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); printf("%d : %s\n" , select2 , strAnimal[arrayAnimal[secondSelect_x][secondSelect_y]]); printf("\n\n"); failCount++; } // 모든 동물을 찾았는지 여부, 1 : 참, 0 : 거짓 if (foundAllAnimals() == 1) { printf("\n\n 축하합니다 ! 모든 동물을 다 찾았네요 \n"); printf("지금까지 총 %d 번 실수하였습니다\n" , failCount); break; } } return 0; } void initAnimalArray() { for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; i++) { arrayAnimal[i][j] = -1; } } } void initAnimalName() { strAnimal[0] = "원숭이"; strAnimal[1] = "하마"; strAnimal[2] = "강아지"; strAnimal[3] = "고양이"; strAnimal[4] = "돼지"; strAnimal[5] = "코끼리"; strAnimal[6] = "기린"; strAnimal[7] = "낙타"; strAnimal[8] = "타조"; strAnimal[9] = "호랑이"; } void shuffleAnimal() { // □□□□□ // □□□□□ // □□□□□ // □□□□□ for (int i = 0; i < 10; i++) { for (int j = 0; j < 2; j++) { int pos = getEmptyPosition(); int x = conv_pos_x(pos); int y = conv_pos_y(pos); arrayAnimal[x][y] = i; } } } // 좌표에서 빈 공간 찾기 int getEmptyPosition() { // □□□□□ 0 1 2 3 4 -> 0 0 0 0 0 // □□□□□ 5 6 7 8 9 -> 1 1 1 1 1 // □□□□□ 10 11 12 13 14 -> 2 2 2 2 2 // □□□□□ 15 16 17 18 19 -> 3 3 3 3 3 while (1) { int randPos = rand() % 20; // 0 ~ 19 사이의 숫자 반환 // 19 -> (3,4) int x = conv_pos_x(randPos); int y = conv_pos_y(randPos); if (arrayAnimal[x][y] == -1) { return randPos; } } return 0; } int conv_pos_x(int x) { // 19 -> (3,4) return x / 5; } int conv_pos_y(int y) { // 19 -> 19 / 5 ? 몫은 3, 나머지 4 return y % 5; // y를 5로 나눈 나머지 값 } void printAnimals() // 동물 위치 출력 { printf("\n===== 이건 비밀인데.. 몰래 보여줍니다===\n\n"); for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { printf("%8s" , strAnimal[arrayAnimal[i][j]]); } printf("\n"); } printf("\n=======================================\n\n"); } void printQuestion() // 문제 출력 (카드 지도) { printf("\n\n(문제)\n"); int seq = 0; // seq // checkAnimal // □□□□□ 0 1 2 3 4 0 0 0 0 0 // □□□□ 하마 6 7 8 9 1 0 0 0 0 // □□□□□ 10 11 12 하마 14 0 0 0 1 0 // □□□□□ 15 16 17 18 19 0 0 0 0 0 for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { // 카드를 뒤집어서 정답을 맞혔으면 '동물 이름' if (checkAnimal[i][j] != 0) { printf("%8s" , strAnimal[arrayAnimal[i][j]]); } // 아직 카드를 뒤집지 못했으면 (정답을 못맞혔으면) 뒷면 -> 위치를 나타내는 숫자 else { printf("%8d" , seq); } } } } int foundAllAnimals() { for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { if (checkAnimal[i][j] == 0) { return 0; } } } return 1; // 모두 다 찾음 } 다음과 같이 작성했고, 컴파일시 에러는 뜨지 않지만 돌려볼 시 -------------------------------- Process exited after 3.839 seconds with return value 3221225725 계속하려면 아무 키나 누르십시오 . . .라고 나옵니다. 왜 이러는 걸까요?
-
해결됨홍정모의 따라하며 배우는 C언어
텍스트 파일 입출력 예제에서 텍스트 파일을 못찾는 것 같아요,,
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { int ch; FILE* fr; unsigned long count = 0; if (argc != 2) { printf("Usage : %s filename\n", argv[0]); exit(EXIT_FAILURE); } if ((fr = fopen(argv[1], "r")) == NULL); { printf("Can't open %s\n", argv[1]); exit(EXIT_FAILURE); } while ((ch = fgetc(fr)) != EOF) { fputc(ch, stdout); count++; } fclose(fr); printf("FILE %s has %lu characters\n", argv[1], count); return 0; } 코드도 맞게 작성했고 파일 이름이랑 다 맞게 했는데 이렇게 나오네요. . . , , , , , , ,ㅠㅠ 문제가 뭘까요....?! 크아악
-
미해결홍정모의 따라하며 배우는 C언어
15:00 부근에서 &parr[0]와 parr[0]가 왜 다른지 이해가 안됩니다.
arr = arr[0] = &arr[0] = &arr[0][0] = parr[0]인건 알겠습니다. 그런데 똑같은 배열형태인데 &parr[0]와 parr[0]가 왜 다른지는 이해를 못하겠습니다. 15:30에서 강의에서는 이에 대한 자세한 이유를 알려주기 힘드니 10.1강의와 10.12강의를 보고 오라고 하셨지만 여기를 봐도 이곳에선 배열을 가지고 이중포인터를 소개하는게 아니고 int형 변수를 가지고만 설명을 해서 아무리 봐도 10.13의 15:00 부분이 잘 이해가 안됩니다.
-
미해결홍정모의 따라하며 배우는 C언어
기호상수 관련해서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. #include <stdio.h> #define TAX_RATE 0.2 int main() { const int MONTHS = 12; int m_salary, y_salary; printf("월급을 입력하시오 : "); scanf("%d", &m_salary); y_salary = MONTHS * m_salary; printf("연봉은 %d입니다.\n", y_salary); printf("세금은 %f입니다.", y_salary * TAX_RATE); return 0; } 연봉과 세금에 관한 코딩입니다. printf("세금은 %f입니다.", y_salary * TAX_RATE);에서 double이나 float같은 실수형자료형을 쓰지않았음에도 %f로 썼는데 됬습니다. 이유를 알수있을까요?
-
미해결홍정모의 따라하며 배우는 C언어
한국어 설정
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세 한국어로 바꾸는방법이있을까요?
-
미해결홍정모의 따라하며 배우는 C언어
혹시 자막은 사용못하나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결홍정모의 따라하며 배우는 C언어
exception throw
9:34 에 나오는 코드를 따라했는데 다음 화면처럼 오류가 뜨고 실행이 되지 않았는데요 제가 다른 분 질문보고 혹시 이건가 해서 고쳤더니 해결되었습니다. (malloc이 <stdlib.h> 에 정의되어 있는데 이것을 include 하지 않아서 였습니다. ) 그런데 강의화면의 경우 <stdlib.h>를 쓰지 않고도 실행이 잘되는데 <stdlib.h>가 뭔가 세부내용이 바뀌어서 그런 건가요? 그리고 이번에는 다행히 잘 해결된 상황이긴 하지만 제 화면에서처럼 저러한 exception throw 오류가 뜨면 저것을 보고 'malloc이 정의가 안 되어있구나' 라고 어떻게 생각해야 하나요? malloc에 빨간 줄이 쳐진 것도 아니고 오류를 어떻게 해결해야 했던 건지 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C언어
size_t %zu사용
5:58 에서 size_t 에 해당하는 형식 지정자가 %zu라고 하셨는데 6: 42쯤 나오는 코드 34,35 번째 줄에는 왜 %zu가 쓰인 건가요? size_t를 사용하지 않은 코드인데도 %zu를 쓴 이유가 궁금합니다. 16:27에 나오는 코드에서도 size_t를 사용하지 않았는데 50번째 줄에서도 %zu를 사용하는데요 size_t라는 자료형을 선언해야만 출력할 때 %zu를 쓸 수 있는 것 아닌가요?