inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

3-9, 고정 너비 정수형 질문

해결됨

홍정모의 따라하며 배우는 C언어

안녕하세요 강의를 복습하며 헷갈리는 점이 있어 질문드립니다. 고정 너비 정수형은 시스템이 다른 운영체제에서도 코드가 정상적으로 작동할 수 있도록 정수 자료형의 크기를 미리 지정한 정수형으로 이해했습니다. 이러한 정의가 맞을까요? printf 함수에서 고정 너비 정수형으로 선언된 변수(i32)의 형식지정자를 쓸 때 예시를 보며 살짝 헷갈리는 점이 생겼습니다. 예시에서 3가지 경우를 교수님께서 보여주셨는데, 전부 출력이 동일하게 나왔습니다. 만약 int type을 2바이트로 인식하는 시스템에 예제의 코드를 사용하면 메크로를 쓰지 않은 첫 번째, 두 번째 예시는 오류가 발생하는 건가요? 맞다면 sigend int 형식 변환자에 속하는 %d와 32비트로 고정된 변수 i32의 크기가 서로 맞지 않아서 일까요? 아직 이해가 부족해서 용어들이 적절히 쓰였는지 모르겠습니다. 답변 감사합니다~!

  • c
이재완 댓글 1 좋아요 1 조회수 368

함수포인터기본문법 8:21초 질문입니다.

해결됨

독하게 되새기는 C 프로그래밍

안녕하세요 선생님 질문이 있습니다. 저의 경우에 디스어셈블리(release 64)로 확인한 결과 int main() { 00007FF64DD11070 sub rsp,28h int (*pfAdd)(int, int) = add; result = pfAdd(3, 4); printf("Result %d\n", result); 00007FF64DD11074 mov edx,7 00007FF64DD11079 mov dword ptr [result (07FF64DD13638h)],7 00007FF64DD11083 lea rcx,[string "Result %d\n" (07FF64DD12250h)] 00007FF64DD1108A call printf (07FF64DD11010h) return 0; 00007FF64DD1108F xor eax,eax } add (메모리주소) 부분이 없는데 12세대 cpu를 써서 이런 차이가 있는것인가요?

  • c
  • kernel
  • secure-coding
dohyun_lim 댓글 2 좋아요 0 조회수 369

4-4 Extra 예시 오류

해결됨

홍정모의 따라하며 배우는 C언어

안녕하세요. 교수님과 똑같이 코드를 쳤는데 에러가 발생했습니다. 인터넷을 검색해도 무슨 말인지 잘 모르겠어서 질문 드립니다. 감사합니다.

  • c
이재완 댓글 1 좋아요 3 조회수 458

8.9 강의 파일 위치에 대해 여쭙니다.

미해결

홍정모의 따라하며 배우는 C언어

vcxproj도 있는 상황에서 파일 리드에 실패합니다. 이럴 경우 어떻게 해야하나요?

  • c
이영광 댓글 1 좋아요 1 조회수 431

Stack frame 관련하여 질문 드립니다.

해결됨

독하게 되새기는 C 프로그래밍

인터넷에 검색 했을때는 64bit에서 로컬 변수 주소 배치 방향이 32bit와 다른 것이 32bit, 64bit의 자체적인 특성이 아니라 컴파일러의 환경에 따라 달라진다고 하던데 어떤 것이 맞는지 궁금합니다.

  • c
  • kernel
  • secure-coding
CIS 댓글 1 좋아요 0 조회수 323

7.2 int ch일 때의 getchar()와 putchar()

미해결

홍정모의 따라하며 배우는 C언어

int ch; ch = getchar(); putchar(ch); 위 코드에서 getchar() 은 int타입이니까 a 를 입력하면 a 의 아스키코드 97 을 ch 에 넣어서 ch 의 값은 97 을 얻게 되고, putchar(ch); 역시 int타입이니까 97 을 출력할 줄 알았는데 그대로 a 가 출력 되는 이유는 무엇인가요?

  • c
sara0099 댓글 1 좋아요 1 조회수 352

따배씨 4-2 sizeof 연산자 질문

해결됨

홍정모의 따라하며 배우는 C언어

안녕하세요. 강의 듣고 궁금한 것이 있어 질문 드립니다. 1번째 예시에서 size_t에 마우스를 갖다 대보니까 영상과 다른 값이 나타납니다. 왜 저는 선생님처럼 'int'가 아니라 'long long'으로 표시될까요? 2번째 예시에서 8바이트가 출력됩니다. 이유를 알고 싶습니다.

  • c
이재완 댓글 1 좋아요 2 조회수 394

C언어 부동소수점 오차 관련해서 실제 실무적으로 해결하셨던 방법이 있을까요?

해결됨

독하게 되새기는 C 프로그래밍

안녕하세요. C언어로 개발을 하고 있는 왕초보 개발자입니다. 최근 부동소수점 관련해서 문제에 직면하게 되어서 C언어 개발자 분들은 혹시 실무적으로 어떻게 해결하셨는지 궁금합니다. 제가 맡은 프로그램은 예전에는 해당 값이 소수점이 발생할 일이 없어서 인지 부동소수점 문제점 까지 크게 고려하지 않고 작성된 것으로 보입니다. 그리고 이전 개발자들도 다 퇴사하여 없고 저 혼자 해당 프로그램을 맡아 주변에 물어볼 곳 없어 여기에 질문하게 되었습니다ㅠㅠ 문제점에 대해 간단히 말씀 드리면... 두서없이 급하게 작성해서 코드와 문제점이 발생했던 숫자는 정확하지 않을 수 있습니다. double a,b,c,d; a = 17772.8; b = 2338.2; c = modf(a+b, &d); a+b값이 20111 가 나오거나 아니면 오차로 더 큰 수면 그나마 다행이겠지만... modf 함수를 사용하여 실수부만 사용하고 있습니다. 실제로 합산 값을 찍어보니 부동소수점 문제가 발생해서 20110.99999999 값을 갖고 있어서 소수 부분 제거 후 20110 의 값만 남게 되어서 값이 정확하지 않아 문제가 발생했습니다. 관련해서 해결해보신분 ㅠㅠㅠㅠ 도움주시면 정말 감사하겠습니다.

  • c
  • kernel
  • secure-coding
  • 부동소수점
  • pro*c
  • modf
도도레미 댓글 1 좋아요 0 조회수 1767

정수와 Endian 그리고 2의 보수 15:05쯤 질문이있습니다.

해결됨

독하게 되새기는 C 프로그래밍

안녕하세요 선생님 질문이 2개 있습니다. 1) 15:05쯤에 "1byte의 메모리에 64bit 상수가 주소로 부여됩니다." 라는 의미가 단순히 저 메모리 창에서 메모리(1byte)에 대한 주소를 2^64 까지 부여할 수 있으니까 0x자릿수가 늘어난것이다. 라고 이해하면 맞나요..? 2) 추가적으로 a의 타입을 float , double로 바꾸는 경우 전혀 다른 값이 들어가던데 gpt를 통해 검색하니 Let's break down the hexadecimal representation "00 00 20 41" into binary and decode it: Convert each hexadecimal digit into its corresponding 4-bit binary representation: 0: 0000 2: 0010 0: 0000 4: 0100 1: 0001 Concatenate the binary representations: 000000000000001000000100000001 Split the binary representation into its components based on the IEEE 754 format: Sign bit (1 bit): 0 (positive value) Exponent bits (8 bits): 00000000 Mantissa bits (23 bits): 00000100000000100000001 Apply the IEEE 754 formula: Sign: 1^(0) = 1 (positive) Exponent: 2^(0) - 127 = -127 Mantissa: 1.00000100000000100000001 (binary) The final value is calculated as (1 + mantissa) * 2^(exponent): (1 + 1.00000100000000100000001) * 2^(-127) = 1.00000100000000100000001 * 2^(-127) = 1.00000100000000100000001 * 2^(-23) * 2^(-104) ≈ 10 Therefore, the hexadecimal representation "00 00 20 41" corresponds to the floating-point value 10 in C. 이런식으로 설명해줬는데 부동소수점 관련된이야기인것을 알겠는데 자세히 알아야 하나요...?

  • c
  • kernel
  • secure-coding
dohyun_lim 댓글 1 좋아요 0 조회수 437

파이썬 합계 오류

미해결

파이참으로 100~200 까지 3의 배수 인쇄하고, 그의 합 구하고 있는데 3의 배수 5개씩 인쇄는 잘 했는데 합계가 이상하게 구해집니다. 오류가 어디에 있는 건지 모르겠어요.. 고치면 오류떠서 아예 실행이 안되는데 ㅜㅜ for문이랑 while문 두개로 만들고 있는데 둘다 합계만 이상하게 뜹니다. ㅠ <<for문>> a = 0 hap = 0 count = 0 for a in range(100, 201) : if a % 3 == 0 : print(a) count = count + 1 if count % 5 == 0 : print() a = a + 1 hap = hap + a print("100~200 중 3의 배수의 합 : %d" % hap) <<while문>> a = 100 count = 0 hap = 0 while a <= 200 : if a % 3 == 0 : print(a) count = count + 1 if count % 5 == 0 : print() a = a + 1 hap = hap + a print("100~200 중 3의 배수의 합 : %d" % hap)

  • 파이썬
  • python
열공123 댓글 1 좋아요 0 조회수 422

C++ 클래스 인스턴스의 지역변수 초기화 오류 & C4996 에러

미해결

#include<iostream> #include<cstring> #define LENGTH 40 using std::cout; using std::endl; class Person { char* name; int age; public: void SetName(const char* str) { // 설정자는 잘못된 값이 설정되는 것을 방지하기위해, 그 값을 먼저 검사한다. if (!str) return; // 문자열을 멤버 변수 name에 복사 strncpy(name, str, LENGTH); } void SetAge(int n) { age = n < 0 ? 0 : n; } inline char* GetName(const char* str) { return name; } inline int GetAge(int n) { return age; } void Print() { cout << "name: " << name << ", age: " << age << endl; } }; int main() { Person jackson; Person brown; Person dean; // 각 객체의 설정자로 멤버 변수에 값을 설정 jackson.SetName("Michael Jackson"); jackson.SetAge(29); brown.SetName("Charles Brown"); brown.SetAge(40); dean.SetName("James Dean"); dean.SetAge(20); // print out jackson.Print(); brown.Print(); dean.Print(); return 0; } main함수 내에서 Person클래스의 객체 인스턴스들을 만드려는데, 자꾸 저 부분에서 지역변수가 초기화되지 않았다고 하네요... 설정자를 통해서 인스턴스 내 멤버 변수에 값을 대입했는데도 불구하고 말이죠. 정확히 무슨 문제인지 모르겠습니다. 2번째는 C4996코드 오류인데요. strncpy함수가 위험성이 있으니 strncpy_s함수를 대신해서 사용하라고 하는데, 보안의 위험성을 떠나서 strncpy함수를 사용하면 오류가 나는 이유가 있나요

  • c++
  • c
최선우 댓글 1 좋아요 0 조회수 648

혹시 이건 왜 안되는지 말씀해주실 수 있나요??

해결됨

IT 기업 취업을 위한: 코딩테스트 혼자서 정복하기 (C/C++)

#include <stdio.h> int max(int x, int y) { if (x > y) { return x; } else if (y > x) { return y; } else { return x; } } int min(int x, int y) { if (x < y) { return x; } else if (y < x) { return y; } } int main(void) { int dp[19] = { 0,-1,-1,1,-1,1 }; int i = 0; for (i = 6; i < 19; i++) { if (dp[i - 3] < 0 && dp[i - 5] < 0) { dp[i] = -1; continue; } else if (dp[i - 3] >= 1 && dp[i - 5] >= 1) { dp[i] = min(dp[i - 5] + 1, dp[i - 3] + 1); continue; } else if (dp[i - 3] > 0 || dp[i - 5] > 0) { dp[i] = max(dp[i - 3] + 1, dp[i - 5] + 1); continue; } } for (i = 0; i < 19; i++) { printf("값:%d 개수:%d\n",i, dp[i]); } return 0; }

  • c
  • 코딩-테스트
석종엽 댓글 2 좋아요 1 조회수 560

12.16 강의 realloc() 함수 질문입니다.

해결됨

홍정모의 따라하며 배우는 C언어

12.16 강의 realloc() 함수 질문입니다. int n = 10; int* ptr = (int*)calloc(n , siezof(int)); n = 20; int* ptr2 = (int*)realloc(ptr, n * sizeof(int)); 위와 같이 realloc() 함수를 이용해 메모리를 할당받으면 자동으로 calloc으로 할당 받은 메모리는 할당이 해제 되는 건가요? 디버거 이용해서 보면 프로그램이 끝날 때 까지 calloc으로 할당받는 메모리는 해제가 되지 않고 메모리 누수가 발생하는거 같은데 해제가 되지 않는게 맞나요?

  • c
빵과병아리 댓글 1 좋아요 1 조회수 444

스택 오버플로우 관련 질문입니다.

해결됨

독하게 되새기는 C 프로그래밍

섹션 3 두번째 강의를 보면 스택의 크기는 보통 1MB로 설정되어 있고, 이 크기를 컴파일러 설정에서 10MB로 바꾸는걸 보여주셨는데요. 이 보통 1MB라는 스택의 크기는 운영체제 수준에서 설정된 값이 아닌가요? 어떻게 단지 컴파일러에서 값을 변경한 결과 비정상 작동하던 프로그램이 정상 작동하는 것인지 잘 이해가 되지 않습니다. 운영체제가 실행파일을 봤을 때 스택의 크기가 1MB가 아니라 달리 설정되어 있다면 그에 맞춰 실행을 하는 것인가요?

  • c
  • kernel
  • secure-coding
loyalswallow 댓글 1 좋아요 1 조회수 366

6-4(배열 파트 '문자 vs 문자열') sizeof 예제 다르게 출력되는 분들 참고하세요.

해결됨

C 프로그래밍 - 입문부터 게임 개발까지

간혹 "나도코딩"의 sizeof 값이 13으로 나오는 분들이 있습니다. 저도 그랬습니다. 해당 내용은 Encoding 방식의 차이 때문에 일어난 일입니다. 즉, 한글을 컴퓨터에 어떻게 저장할 것이냐의 차이인데, EUC-KR 혹은 CP949 방식으로는 나도코딩님처럼 한 글자가 2 byte를 차지하여 저장되지만, UTF-8 환경에서는 3 byte를 차지하게 되어 sizeof가 예제와 다르게 나오는 것입니다. "만일"이라는 단어를 예시로 EUC-KR 환경이라면 sizeof가 5, UTF-8 환경이라면 sizeof가 7이 나오면 정상입니다. 즉 EUC-KR에서는 (2*n+1), UTF-8에서는 (3*n+1)의 값이 나오면 예제가 정상적으로 수행된 것입니다. 저는 VSCode에서 실행하고 있는데 하단 오른쪽에 Encoding 방식을 설정할 수 있게 되어 있습니다. 수업에서 쓰는 에디터에서도 설정이 가능할 것 같은데, 확인해보지는 않았습니다.

  • c
  • sizeof
  • encoding
  • utf-8
  • euc-kr
작은새 댓글 0 좋아요 1 조회수 435

웹서버 실행시 무한로드

미해결

[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]

위에 코드와 같이 웹서버를 열 때 처음 실행만 정상적으로 뜨고 두 번째부터는 로드중으로 계속 화면에 아무것도 안 뜹니다. 주피터 노트북과 아나콘다 프로그램을 완전히 종료하고 다시 접속해 위에 코드를 입력하면 다시 처음만 정상실행되고 두번째부터는 무한로드중으로 뜹니다. 다른 컴퓨터로 실행해봤을 때는 정상적으로 화면에 출력되는 것을 확인했고 제 노트북만 이러네요. 이거 때문에 아나콘다도 다시 설치해보고 윈도우에 내장되어 로컬호스트 주소도 확인하고 윈도우도 재설치해보고 컴퓨터 자체를 포맷해봤는데도 계속 같은 증상이네요. 혹시 문제가 무엇일까요? 이거 때문에 수업 진도를 못 나가고 있어요. 도와주세요ㅠㅠ

  • python
  • rest-api
  • flask
댓글 1 좋아요 0 조회수 531

강의 자료 링크

미해결

모든 개발자의 실무를 위한 올인원 기본기 클래스

강의 자료 링크가 동작이 안되는데 확인 부탁 드립니다!

  • python
  • git
  • docker
  • tdd
  • 객체지향
  • 아키텍처
  • ci/cd
  • 동시성
  • 소프트웨어-테스트
최일규 댓글 1 좋아요 0 조회수 653

Colab 에서 한글 사용시 셀이 확대 되는 문제

미해결

안녕하세요 colab을 이용하던 도중에 갑자기 이상한 현상이 생겨서 질문 남깁니다! 영어를 사용하면 별 문제가 없는데 이상하게 한글만 사용하면 글씨색도 변하고 위의 사진 처럼 셀의 화면이 내려가거나 확대 됩니다. 주석뿐만 아니라 코드에도 한글을 넣으면 똑같은 현상이 발생합니다. 작성시에는 화면이 보이지 않지만 작성후 방향키나 공백을 넣으면 다시 원래 화면으로 돌아옵니다. ㅠㅠㅠㅠ 너무 거슬려서 주석을 작성 할 수 가 없습니다ㅠㅠㅠ 해결책이 있을까요 이것저것 옵션 다 만져봤지만 해결이 안돼서 여쭙니다.

  • colab
  • 한글
  • python
한승훈 댓글 1 좋아요 0 조회수 591

트리에 관해 질문 있습니다

해결됨

코딩테스트 [ ALL IN ONE ]

해당 코드에서 LCA에 첫번째 인자값에 배열을 넣어주는데 LCA의 함수에서 root는 left와 right를 가지고 있습니다. 무엇인가요...

  • python
  • 코딩-테스트
  • 알고리즘
유제환 댓글 1 좋아요 1 조회수 509

2차원 배열에서 arr[0]+1 과 &arr[0]+1 의 차이

미해결

홍정모의 따라하며 배우는 C언어

#include <stdio.h> int main() { float arr2d[2][4] = { {1.0f,2.0f,3.0f,4.0f},{5.0f,6.0f,7.0f,8.0f} }; printf("%f, %f\n", *(arr2d[0] + 1), **(&arr2d[0] + 1)); printf("%llu, %llu", (unsigned long long)(arr2d[0] + 1), (unsigned long long) ( & arr2d[0] + 1)); // 12 차이 } 위의 예제에서 arr2d[0]+1은 arr2d[0][1]의 주소이고, &arr2d[0]+1은 arr2d[1][0]의 주소라고 나오는데요 그냥 c언어의 문법이 그런 것인지, 아니면 어떤 이유가 있는 것인지가 궁금합니다. 또한, 위의 예제에서 [0][1]번째의 값인 2.0과 [1][0]번째의 값인 5.0을 출력하고자 할때, 후자의 경우에만 indirection을 두번 해줘야 하는 이유가 알고 싶습니다.

  • c
현정 댓글 1 좋아요 1 조회수 544

인기 태그

인프런 TOP Writers

주간 인기글