월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
오버플로우문제
오버플로우 관련 학습 중에 int main() { //unsigned int u_max = UINT_MAX + 1; signed int I_max = UINT_MAX + 1; // i to binary represenatation char buffer[33]; _itoa(I_max, buffer, 2); // print decimal and binary printf("decimal : %s\n", I_max); printf("binary : %s\n", buffer); return 0; 를 실행해서 출력하게 되면 decimal = null binary = 0 이 나오게 됩니다. signed int의 경우에는 왜 unsigned int와는 다르게 null로 출력될까요?
- 미해결홍정모의 따라하며 배우는 C언어
7분 20초 num의 소수 존재유무 예제 질문드립니다.
7분 20초 num의 소수 존재유무 예제 질문드립니다. for (unsigned div = 2; div < num; ++div) { if (num % div == 0) isPrime = false; } 이 부분에서 반복 조건이 (div < num) 하나밖에 없는데도 num의 소수 존재 유무를 알 수 있는 이유가 어떤건가요? 예를 들어 num이 숫자 9라면 div가 2일때는 isPrime = true였다가 div 3일때는 isPrime = false로 바뀌고 다시 div가 4일때는 isPrime = true로 바뀌어서 반복조건에 (div < num) 하나만 있으면 isPrime이 제대로 된 값을 갖지 못하는것 아닌가요? 제가 생각하기에는 조건에 (div < num) && (isPrime == true)가 있어야 한다고 생각했는데 강의에 나온대로 코딩하면 문제없이 잘 이루어지는게 이해가 안되서 질문드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
배열을 안쓰고 예제문제를 구현해봤습니다. 이것과 관련해서 질문드립니다.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #define SIZE 5 int main() { int num = 0; int sum = 0; printf("Enter %d numbers :", SIZE); for (int i = 0; i < SIZE; ++i) { scanf("%d ", &num); sum += num; } printf("SUM = %d", sum); return 0; } 예제에서는 5개의 숫자를 입력받고 5개 숫자의 합을 출력하는 내용입니다. 코드만 보면 5개 입력 받고 숫자 5개의 합으로 넘어가야 할것 같은데 실행을 해보면 숫자 6개를 입력하고 나서야 숫자 5개의 합으로 넘어갑니다. 왜 이렇게 되는지 알 수 있을까요? 숫자 하나씩 입력하면서 띄어쓰기도 했습니다
- 미해결홍정모의 따라하며 배우는 C언어
정적변수의 외부연결
외부연결 안하고 함수 파라미터를 포인터로 받아서 주소로 값을 사용하면 방법도 가능할것 같은데 이 방법은 직관적?이지 않아서 저런 방법이 따로 있는건가요?
- 미해결홍정모의 따라하며 배우는 C언어
12분 45초 가량부분 질문드립니다.
일괄적으로 \\을 추가하거나 코드에서 일괄적으로 \\을 삭제하는 것은 어떻게 하는것 인가요?1
- 미해결홍정모의 따라하며 배우는 C언어
01:09 에서 비밀번호 string으로 응용
본 강의 1분 쯤에 비밀번호 프로그램을 보여주신 것을 봤습니다. 비밀번호를 337로 하셨는데 저는 비밀번호가 int가 아닌 string으로 하고 싶어서 비밀번호를 "asd"로 만들어봤습니다. 근데 아쉽게도 asd를 입력해도 무한 루프로 돌아갑니다. 뭐가 잘못된 건지 오래 고민해봤는데 해결이 안되네요. 새삼 말씀드립니다만 좋은 강의 감사합니다. ------------------------------------------------------ #include <stdio.h> int main() { const char pass[100] = "asd"; char code[100]; while (pass != code) { printf("Enter secret code : "); scanf("%s", code); } printf("Good!"); return 0; }
- 미해결홍정모의 따라하며 배우는 C언어
19분 14초에서 double, float
123.456 같은 실수가 있다면 float, double중 어느 자료형을 사용할지 어떻게 구분하나요?
- 미해결홍정모의 따라하며 배우는 C언어
안녕하세요
제가 오버플로우 제대로 공부하려고 다시 질문드립니다. 8분 30초에 unsigned 변수에 scanf함수로 음수 값인 -1024를 받아서 printf함수로 unsigned형으로 출력하는 데 4294966272 값이 나왔습니다. 교수님 께서 오버플로우 라고 하셨는데 언더 플로우 아닌가요?? unsigned 의 최소값은 0이고 언더플로우가 되어서 4294966272 가 나온거 같은데 제가 틀린건지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
오버플로우 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 13분 10초에 printf("%d\n" , i); 에서 -1 이 나온거요 저는 0이라고 생각했는데 왜 -1 인가요? signed int 의 최대 범위인 2147483647 을 벗어 나서 오버플로우가 되어서 4294967295 (unsigned int의 최대범위값) 에서 2147483647 을 뺀 값인 2147483648 가 -2147483648 (unsinged int 의 최소값) 과 더해져서 0이라고 생각했는데 아무래도 잘못 생각한거 같아서 질문 남깁니다.
- 미해결홍정모의 따라하며 배우는 C언어
프로그램에 할당된 메모리의 각각 메모리요소들은 서로 연접해있는가?
반갑습니다. 앞선 그림 자료들에선 프로그램에 할당된 메모리 안의 각각의 구성 메모리들 예를 들면 스택과 힙 그리고 텍스트 세그먼트 등... 이것들은 서로 연접해있는 걸로 그려져 있는데요, 실제 빌드 후 실행하면 각각 메모리들간의 차이가 상당히 큰 듯합니다. 그만큼 파일의 크기가 큰 것으로 해석해서 각 메모리요소들은 서로 연접해있다고 봐야 할지, 그림은 이해를 위한 예시일 뿐이고 각 요소들은 서로 연접해있다고 보장할 수는 없는지 궁금합니다. 고맙습니다!
- 미해결홍정모의 따라하며 배우는 C언어
unsigned int ui = 3000000000U 에서
unsigned int ui = 3000000000U 에서, 뒤에 U를 붙이는 이유는 무엇인가요? 다른 자료형들도 전부 char이면 c, short면 s를 붙이나요?
- 미해결홍정모의 따라하며 배우는 C언어
strcpy 함수를 쓰는 이유
//구조체 변수 2개를 만들어서 각자의 책 제목과 번호를 설정해라. sub함수를 이용해서 printf 하기. #include <stdio.h> #include <stdlib.h> //malloc 함수 사용하기 위해. #include <string.h> //strcpy 함수 사용하기 위해. struct Book { int number; char title[100]; }; void showbook(struct Book *p, int n) { int i; for (i=0;i<n;i++) { printf("책 번호: %d 책 제목: %s \n", (p+i)->number, (p+i)->title); } } int main() { struct Book *p; //구조체 포인터 설 정 p=(struct Book *)malloc(2*sizeof(struct Book)); //구조체 변수 두개를 포함할 수 있는 메모리 할당. if (p==NULL) { printf("동적메모리 할당에 실패했습니다"); exit(1); } p->number=11; p->title="C Programming"; //strcpy(p->title, "C Programming"); (p+1)->number=22; strcpy((p+1)->title,"Data structure"); showbook(p,2); free(p); return 0; } 밑에서 7번째 문장에 원래 strcpy(p->title, "C Programming"); 이라는 함수 대신에 p->title ="C Programming" 이라고 설정하니 실행이 안됩니다. 왜 실행이 안되는 것인지 이유를 모르겠습니다. 꼭 strcpy 를 써야하는 이유가 있나요?
- 해결됨홍정모의 따라하며 배우는 C언어
C 언어 연습 도중 질문
여기서 출력을 하면 t.number와 t.grade 는 잘 나오지만 t.name 부분에서 "hell" 까지만 출력이 됩니다. 그래서 struct 부분에서 char name [10]; 으로 선언하니 다시 "hello"라고 잘 출력이 됩니다. 어디서 문제가 있는 걸 까요??
- 미해결홍정모의 따라하며 배우는 C언어
PI 선언할때 Expected expression라고 오류가 뜹니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. PI를 선언 하면서 Expected expression 오류가 뜹니다 ㅠ 도저히 원인을 알수가 없어 질문남깁니다 int main() { float radius, area, circum; printf("i'm %s.\n", AI_NAME); printf("input radius\n"); scanf("%f", &radius); area = PI * radius * radius; circum = 2.0f * PI * radius; printf("area is %f\n", area); printf("circumference is %f\n", circum); return 0; }
- 미해결홍정모의 따라하며 배우는 C언어
질문있습니다!!
원래 질문 글이 사라져있네요 ㅠㅠ 도움 받아서 결국 프로그램은 다 작성했습니다 감사합니다 ㅎㅎ 한가지 해결하지 못한 것이 있어서 다시 찾아왔습니다 ㅠㅠ scanf가 '\n'를 읽지 않는다/ 읽어내지 못한다 라는 말을 답변에서도 보고 다른 질문자분들의 답변에서도 봤는데요, 1. scanf(" %c", &A)처럼 %c 앞에 한 칸을 띄우는 이유가. scanf가 여러줄 있을 시 앞에서 입력되어 있는 '\n'를 문자로 받아들 일 수 있기 때문이지 않나요? 즉 scanf는 정상적으로 '\n'를 읽어낼 수 있지 않나요? 2. 저는 이 예제를 작성할 때에 콘솔창에 입력하는 방식이 (문자)-(space)-(숫자)-(space)-(숫자)-('\n')형식이다 보니 마지막 '\n'이 while문을 한바퀴 돌고 난 후의 문자 입력시 영향을 줄 수 있다고 생각해서 " %c"로 작성하였었습니다. 그런데 scanf(" %c", &A);는 '\n'(엔터키)를 실제로 인식하지 못하던데 왜그런가요..?(1번이랑 이어지는 내용 같네요 ㅠㅠ) 3. 찾아보니 scanf는 형식 지정자에 어긋나는 자료를 받게되면 동작을 멈춘다고 했는데 scanf("%d%d%d", &a, &b, &c)로 디버깅을 해보니 입력받는 자료가 중간부터 틀릴 경우에도 아예 처음부터 입력을 안받은 것 마냥 원래의 숫자가 들어가 있었는데요, 중간까지라도 맞게 입력받은 숫자들은 그냥 날아갔다고 보면 되나요? 버퍼에도 남기지 않고 그냥 없어진건가요?! 감사합니다
- 미해결홍정모의 따라하며 배우는 C언어
exception throw
9:34 에 나오는 코드를 따라했는데 다음 화면처럼 오류가 뜨고 실행이 되지 않았는데요 제가 다른 분 질문보고 혹시 이건가 해서 고쳤더니 해결되었습니다. (malloc이 <stdlib.h> 에 정의되어 있는데 이것을 include 하지 않아서 였습니다. ) 그런데 강의화면의 경우 <stdlib.h>를 쓰지 않고도 실행이 잘되는데 <stdlib.h>가 뭔가 세부내용이 바뀌어서 그런 건가요? 그리고 이번에는 다행히 잘 해결된 상황이긴 하지만 제 화면에서처럼 저러한 exception throw 오류가 뜨면 저것을 보고 'malloc이 정의가 안 되어있구나' 라고 어떻게 생각해야 하나요? malloc에 빨간 줄이 쳐진 것도 아니고 오류를 어떻게 해결해야 했던 건지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
11분경 질문 있습니다
test.exe | Lecture3.exe가 test.exe에서 Lecture3.exe로 파이프를 타고 데이터가 이동한다고 하셨는데요 파이프의 기능을 찾아보니 A|B일 경우 A에서 나온 데이터를 B로 입력시킬 수 있다고 하는데요 printf 함수의 리턴 값이 글자수라고 배웠었는데 그러면 Programming이라는 글자수가 Lecture3.exe로 넘어가서 I love (숫자) 이런식으로 출력되어야 하지 않나요? 아니면 printf의 리턴값인 글자수가 아니라 test.exe의 출력물인 "Programming"문자열 자체가 파이프를 통해 이동했다고 보는건가요?? 통상적으로 return 값이 넘어가는 걸로 알고 있는데 출력되는 출력물이 넘어가는 것같아 생소해서 질문 드립니다!!
- 미해결홍정모의 따라하며 배우는 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를 쓸 수 있는 것 아닌가요?
- 미해결홍정모의 따라하며 배우는 C언어
size of pointer
10:18 에서 콘솔창에 size of pointer = 4 bytes 라고 뜨는데 저는 4바이트가 아니라 8바이트로 뜨는데 왜 그런건가요? 코드는 똑같이 작성했습니다.
- 미해결홍정모의 따라하며 배우는 C언어
size_t
3:53에서 size_t가 typedef unsigned int 를 의미한다고 나오는데요 제 컴퓨터에서는 typedef unsigned long long으로 뜹니다. 어떻게 이해해야 하나요? 그리고 일단 size_t가 unsigned int 라고 이해한 상태에서 22번째 줄 size_t float_size = sizeof(float); 을 이해하는 것이 조금 헷갈리는데요 float의 크기를 size_t 그러니까 unsigned int로 나타낸다? 이렇게 이해하는 것이 맞을까요?