묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
signed int의 오버플로우 질문입니다
8비트를 예를 들어 8비트의 최댓값이 127이므로 +1을 하면 1000/0000이 되야하는데 부호가있는 8비트 정수에서는 앞이 1이면 안되지 않나요? 근데 컴파일해보니 1000/0000이렇게 뜨는데 이건 부호가있는 정수에서는 -128아닌가요? 헷갈립니다( 32비트를 8비트로 줄여서 말씀드립니다)
-
미해결홍정모의 따라하며 배우는 C언어
Printf 함수질문
공부하다가 잠시 의문점을 갖게 된 부분이있습니다,, 구글링을 해봐도 못찾아서 도움을 받으려고 왔습니다 Printf함수에 대해 질문하고싶은데 저가 보는 책(이것이 c언어다)에서, Printf함수가 기본적으로 문자열을 출력하는 함수이고, 정수와 실수를 printf함수로 출력하려면 실제 아스키코드값형태의 문자로 변환시켜야 출력이 가능하고 그래서 정수나 실수를 printf로 찍을때는 변환문자가 필요하고 이 변환 문자를 사용하라고 나와있습니다 Int a=10; Printf(“%d”,a); 하면 원래 a의 대이터 10은 이진수로 00000000 00000000 00000000 00001010 이렇게 저장되있는데 이러한 이진수가 printf (“%d”)로 출력하면 1번째 질문 %d때문에 아스키코드로 변환하는 과정이 나온다음 문자인10이 화면에 출력된다는건가요? 즉 아스키코드가 ‘0’이 48이고 ‘1’이 49인데 메모리에 저장된 이진수들이 %d로 인해서 아스키코드로 변환하는 과정을 거치고 그과정의 결과가 49 48로 나와서 문자열 10이 나오는건가요?? 저가 이해한게 맞나요? ㅠㅠ
-
미해결홍정모의 따라하며 배우는 C언어
*count++ 에서 precedence 질문
후위증가연산자 ++가 우선순위가 더 높아서 *start++ 가 *(start++)와 동일하다는 것은 알겠습니다. 하지만 이런식이라면 count라는 포인터변수에 ++ 라는 포인터 산술연산을 하고 dereferencing을 한다는 말인데 이것이 후위연산자라서 마치 dereferencing을 먼저하고 그 다음 더하는 것 같아서 헷갈립니다. Operator precedence in C 를 보면 후위연산자가 제일 순위가 높던데 후위연산자를 보면 우선순위에 맞게 괄호를 넣은 것처럼 보면서 계산하고 계산이 모두 끝난 뒤 후위연산자를 적용하는 방식으로 바라보아야 하나요? 우선순위는 제일 높은데 정작 계산은 제일 나중에 되니 이해가 잘 안되네요.
-
미해결홍정모의 따라하며 배우는 C언어
질문입니다
while문에 getchar() 대신 c를 넣으면 실행이 안되는 이유가 무엇인가요? int c = getchar(); 로 선언을 했기 때문에 if문의 조건 부분 처럼 getchar() 부분을 c로 바꾸었더니 실행이 안되네요.
-
미해결혼자 공부하는 C 언어 저자에게 배우는 C 언어의 모든 것
질문
아직 질문받나요?
-
미해결홍정모의 따라하며 배우는 C언어
int[2]의 의미
정확한 의미가 잘 와닿지 않아서 질문드립니다 (int[2]) { 1, 2 }에서 int[2]의 의미는 int타입의 어떤 값 2개로 된, 이름 없는 리터럴을 원소로 하는 배열을 의미하는 것인데 결국 (int[2]) { 1, 2 }는 초기화되지 않은 쓰레기값 2개와 { 1, 2 } 즉 (쓰레기값1, 쓰레기값2) { 1, 2 } 이렇게 각각 4개의 리터럴과 2개의 복합리터럴로 구성된 것이라 이해하면 될까요?
-
미해결C 와 C++ 을 동시에 배워보자 - 두들낙서의 C/C++
1번 문제 관련 질의
지금까지 배운 내용을 토대로 해서 1번 문제를 정수 크기 순서대로 산출하는 것도 가능할까요? 예를 들면 1번 예시의 입력값에 대해 1 1 9 2 3 4 5 형태로 출력하게
-
해결됨홍정모의 따라하며 배우는 C언어
build solution 단축키
빌드솔루션 단축키가 영상에선 f7인데 저는 strl+shift+B 네요. 보통 프로그램들이 단축키는 잘 안바꾸는편인데 VS는 바꼈나봐요? 불편..불쾌.. 아래질문하신분처럼 빌드에러도 뜨고요. ;;;
-
미해결홍정모의 따라하며 배우는 C언어
8.5 2분
2분 경에 나오는 코드 관련해서 질문이 있습니다!! 교수님께서 입력하시는 걸 따라해보면서 디버깅을 해봤는데 이해가 가지 않는 부분이 있습니다 우선 제가 어떻게 이해했는지 한번 적어볼게요!! 읽어보시고 틀린 부분 있으면 지적해주세요!! (편의상 띄어쓰기는 (sp)라고 표기하겠습니다) 우선 scanf함수가 실행되어야 하는데 버퍼에 아무것도 없어서 사용자로부터 입력을 받습니다. 여기서 'a(sp)3(sp)3(sp)\n'을 입력하면 c, rows, cols에 a, 3, 3이 들어가게 되고 display 함수가 실행되어 a가 9개(3x3)이 출력됩니다.(앞에 있는 두개의 sp는 구분하는 기호로써 사용됨) 그 다음 if문을 지나게 되는데 c는 'a'이므로 조건에 부합하지 않아 무시하고 넘어갑니다. 다시 while문의 처음으로 돌아가서 scanf가 실행되어야 하는데 버퍼에 남아있는 게 '(sp)\n'밖에 없어 읽어들일 수 있는 정수형이 없기 때문에 사용자로부터 'b(sp)1(sp)2\n' 라고 입력받습니다.( Q1. 이 부분은 제가 추측한건데 이런 이유때문에 입력 받는 거 맞나요?? ) 그 후에 c는 '(sp)', rows는 3, cols는 3인 상태로 display함수를 통해 (sp)를 9개(3x3) 출력합니다. Q2. 여기서 궁금한 게 있습니다!! 'b(sp)1(sp)2\n'라고 입력 받았는데 왜 rows랑 cols는 여전히 처음 받은 입력값 그대로인 건가요? display(sp, 3, 3)가 실행되고 난 후 if문을 지나서 다시 while문의 처음으로 돌아갑니다. Q3. 현재 버퍼에는 '\nb(sp)1(sp)2\n'이렇게 남아있는데 디버깅을 해보니까 c에는 b가, rows에는 1, cols에는 2가 들어가더라구요.. 왜 c에 \n이 들어가는 게 아니라 b가 들어가는거죠? b를 2개(1x2) 출력하고 난 후 다시 if문을 거쳐 scanf로 돌아갑니다. 그런데 읽어들일 정수형이 버퍼에 없어 사용자로부터 'c(sp)2(sp)1\n'을 입력받습니다. (여기는 교수님께서 입력 안하셨길래 제가 임의로 입력했습니다) 현재 버퍼에는 '\nc(sp)2(sp)1\n'이 있어서 c에는 \n, rows에는 2, cols에는 1이 들어가게 됩니다. display(\n , 2, 1)이 실행되어 \n이 4개 출력되고, if문을 만족시켜서 while문을 탈출하게 되고 프로그램이 종료됩니다. 여기까지가 제가 이해한 내용이고 중간에 틀린 부분 있으면 지적해주세요!! c언어는 포인터가 어렵다고 들었는데 왜 저는 버퍼랑 입력함수에서 헤매고 있을까요..ㅠㅠ
-
미해결홍정모의 따라하며 배우는 C언어
컴파일 오류?
4:55 gcc main.c를 치면 에러가 나요 C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/8.1.0/../../../../i686-w64-mingw32/lib/../lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x39): undefined reference to `WinMain@16' collect2.exe: error: ld returned 1 exit status
-
해결됨홍정모의 따라하며 배우는 C언어
형식지정자 크기와 자료형에 대한 질문입니다.
#include <stdio.h> #include <limits.h> #include <stdlib.h> int main() { char c = 65; short s = 200; unsigned int ui = 3000000000U; long l = 65537L; long long ll = 12345678908642LL; printf("char = %hhd, %d, %c, %ld, %lld\n", c, c, c, c, c); // 왜 %lld 만 수가 다르게 나오나요? 분명 더 큰 형식지정자인데 궁금합니다. printf("short = %hhd, %hd, %d, %ld, %lld\n", s, s, s, s, s); printf("unsigned int = %u, %d\n",ui,ui); printf("long = %ld, %hd, %lld\n", l, l, l); printf("long long = %lld, %ld\n",ll,ll); return 0; } 질문: 더 큰 형식지정자인 %lld 를 사용해서 char 자료형을 출력했는데 다른 형식지정자들은 65로 같게 나오는데 %lld 만 다르게 출력됩니다. 무슨 이유가 있나요?
-
미해결홍정모의 따라하며 배우는 C언어
while (scanf(
안녕하세요. 스트링 입력을 받는 아래 코드에서 while (scanf("%[^\n]%*c", input) != 1) printf("Please try again.\n>> "); 아무것도 입력하지 않고 엔터키를 누르면 Please try again>> 이 구문이 무한 반복으로 나타납니다. 왜 이런 걸까요?
-
해결됨홍정모의 따라하며 배우는 C언어
n
아래에서, 디버거를 통해 n이 4까지 갔다가 다시 1까지 차례로 내려오는 것을 확인은 했지만 왜 내려오는 지를 이해할 수가 없네요. n=4 일때, if 문 이하가 무시되면서 my_func(1) 가 종료되어야 하는게 아닌지요. if (n < 4) my_func (n + 1);
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
sizeof(str) 나오는 마지막 예제 따라하면 에러가 떠요..
char str[256]; scanf("%s", str, sizeof(str)); printf("%s\n", str); 이렇게 화면에서 보이는것 과 똑같이 입력을 했는데 에러가 떠요.. 다음과 같은 에러가 뜨는데, warning: data argument not used by format string [-Wformat-extra-args] scanf("%s", str, sizeof(str)); 왜 그런걸까요? 아, 저는 vs code 사용하고 있어요!
-
미해결홍정모의 따라하며 배우는 C언어
강의에 사용된 코드 공유 부탁드립니다
공부했던 내용을 복습하는데 코드를 공유해주시면 정말 도움이 많이 될 것 같아요.꼭 깃헙이 아니더라도 압축파일로 올려주셔도 괜찮아요!감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
변수명arr1이 main()함수와 average()함수에서 다른변수?
프로그래맹 초자입니다. 명강의 덕분에 c공부를 잘하고 있습니다. 감사합니다. 1. main()함수의 arr1은 지역변수 여서, average()함수의 arr1과 주소가 다른지요? 그래서 main()과 average()내의 arr1의 sizeof()가 다른걸까요? 2. 함수의 매개변수를 포인터로 쓴다는 의미는, 함수가 값을받을때 시작주소만 정해주면, 따라오는 데이타양이 얼마든 줄줄이 채워지는 걸까요?
-
미해결홍정모의 따라하며 배우는 C언어
강의를 모두 보았으며 부록 강의 이벤트 신청을 했지만 아직 쿠폰을 받지 못했습니다.
안녕하세요. 부록 강의 이벤트 신청을 위해 메일을 드렸지만 아직 답변이나 쿠폰을 받지 못했습니다. 쿠폰을 받기 위한 조건은 다 만족한 것 같지만 혹시 부족한 점이 있었다면 알려주시면 감사하겠습니다.
-
미해결홍정모의 따라하며 배우는 C언어
질문은 아니고 감사합니다
상경계에서 컴공 복수전공으로 들어가는데, 컴퓨터구조나 운영체제를 배우기 전에 C를 배우면 좋다는 말에 무작정 시작했는데요. 그동안 자바로 MVC패턴, 스프링 공부만 해봤지 C나 컴퓨터구조는 전혀 몰랐거든요. 처음에 컴퓨터구조부터 알려주셔서 너무 좋습니다. 얼마 안들었지만 재밌게 공부해보겠습니다ㅎㅎ 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
void UpdateString(char* str, int(*pt)(int)) 함수
void UpdateString(char* str, int(*pt)(int)) 함수에서 뒤에가 왜 int(*pt)(int) 인가요?? 매개변수와 반환형이 왜 int 타입인지 모르겠어요
-
미해결홍정모의 따라하며 배우는 C언어
[13.2 강] if(argc != 2) 의 의미에 관해서
if(argc != 2) 를 "명령줄 인수가 비어있으면~" 이라고 말씀 하셨는데 1. 명령줄 인수가 비어있다면 argc 값이 1이 되는거라 if조건문을 만족해서 경고메시지가 출력되지만, 명령줄 인수가 2개 이상이 되어버리는 경우에도( argc 값이 3 이상 ) if조건문이 참이 되어버리지 않나요? 2. 제 생각이 맞다면 if(argc != 2) 보다는 if(argc < 2) 가 되어야 명확하지 않나요?