이제막 c배우는데 char형 변수가 문자를 저장하잖아요 그럼 이 저장된 문자는 알파벳 하나밖에 못저장하나요? 문장으론 안돼나요? 그리고 만약에 게임을 만든다면 char변수에 A를 선언하고 선언한 A를 키보드에서 누르면 무언가 반응이 일어나게도 할수있나요?? 많이 멍청하지만 궁금해서 여쭤봅니다...
c알못에 존나 멍청한 질문인데
익명(203.226)
2016-03-22 23:52
추천 0
댓글 38
다른 게시글
-
답은 [PHP]다. [2]장세분(218.50) | 16.03.22추천 0
-
형님들ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ자바 AWT 도와주십셔ㅠㅠㅠㅠㅠㅠㅠㅠㅠdd(121.64) | 16.03.22추천 0
-
c언어 printf로 운영체제,컴파일러 출력하는법.. [1]궁금맨(36.38) | 16.03.22추천 0
-
SNL코리아7 - 세기의 대결 '정상훈vs베타고' by 유세윤, 예원,에어로홍(aerohong) | 16.03.22추천 0
-
선배님들 ajax채팅이랑 socket채팅 차이점 궁금합니다..안졸리니졸..(iou1525) | 16.03.22추천 0
-
c++ auto랑 auto&가 뭔차이임? [1]익명(163.180) | 16.03.22추천 0
-
처음에는 C가삼댕(shippuden9) | 16.03.22추천 0
-
자바 AWT 잘하시는 형님들 도와주세요ㅠㅠ익명(121.64) | 16.03.22추천 1
-
애니노래로 방송한다! 노래들으러왕 '^' [1]익명(14.45) | 16.03.22추천 0
-
외국에서 일하고싶다능..익명(124.54) | 16.03.22추천 0
집합론배웠지? char는 집합이야, 모든 문자의 집합. 그래서 char a라고 정의하면 char라는 집합에 속한 a라는 변수를 만든거야. a는 char집합의 원소니까 문자 하나겠지.
C언어 책을 꺼내세요. 책장사처럼 되어버려서 민망하지만, 윤성우 난 정말 C프 아니면 knk A mordern C approach로 공부하세요.
그럼 문자대신 문자열을 다루고 싶을땐 어떻게 해야될까, char집합 대신 string집합을 사용하면 되겠지, string집합은 char집합과 다르게 구성하는 원소들이 문자 하나가 아닌 문자열이야. (문자열이 문자가 여러개 모인 거라는 생각을 분리해내는게 중요함) 그럼 string a처럼 정의해서 쓰면 되나?
근데 초심자한테는 char에는 문자가 들어간다고 얘기하면 오히려 어려워하더라. 차라리 문자를 숫자에 대응을 시켜서 저장을 하는데 이런 방법 중 하나가 ascii 코드고 char는 그 숫자를 저장한다고 얘기해야 이해시키기 편한듯?
이게 C언어가 프로그래밍을 처음 배우는 사람들한테 안좋다는 이유야. C언어에서 기본으로 문자열을 표현하는 방식은 char*거든, string이 아니라 char*를 사용해서 문자열을 표현하니까 나는 string을 다루고 싶은데 자꾸 문자(char)가 끼어드는거지, 심지어 string의 구현이 char인건 괜찮다 쳐도 문자가 여러개 모인 연속된 메모리상에서 첫번째 요소의 주소를 가리키는게 곧 문자열이다라는 식으로 문자열을 다루고 싶은 사람에게 문자열의 기계구현까지 익히게 만드는게 C언어야.
C에 string 생겼나요?
ㄹㅇ C는 심오하고 논리적이라서 제대로 배워두면 평생 안 까먹을거다 ㅋㅋ 대충 배워두려고 하면 몇번이고 다시 공부하거나 포기하겠지
char은 1바이트 데이타를 저장합니다.... ASCII라는 문자코드(문자를 데이타통신에서 표현하기 위해 각 문자마다 8비트로 1:1 대응시켜놓은검니다... 예를들어 A=1000001이런식으로요. 사실상 7비트만 쓰고 제일 첫비트는 오류제어비트로 그냥 오류낫냐 안낫냐 세트하는 용도로 씀니다.. 데이타 통신의 기본단위는 8비트 즉 바이트단위니까요//)
그럼 8비트로 송수신되지만 순수하게 7비트만 써서 문자를 표현하므로 0000000~1111111까지니까 2의 7제곱이면 128개죠? 그래요.. 위에서 char은 1바이트의 데이타를 담을수잇다했슴니다.. 그럼 char은 문자 하나만 들어갈수잇겟죠~
안한지 오래되서 모르겠는데 아마 string.h에 정의되있는걸로 알고있음. 그래서 char*대신 string도 쓸 수 있고 ㅇㅇ 근데 종국에는 string이라는게 연속된 메모리의 첫번째 바이트를 가리키는 포인터라는걸 알아야 한다는건 변함이 없고 각 바이트는 문자하나라는 기계구현을 알아야 하는것도 변함이 없지. 근데 이런 구현을 익히고서 UTF-8을 다룰때가 오면 모든 사람이 실수하지 ㅇㅇ char라는 집합의 속성이 깨지니까(문자 하나를 다 표현못함, char의 원소 두개를 써야 한글 문자 하나를 표현)
문자열은 어떻게 보면 문자의 나열이죠.. 컴퓨터상에서는 물론 비트로1010010101이렇게되어있겠지만 알파벳단위로 나열하면 Hello라는 문자열은 H e l l o 이렇게 되어잇겟죠 하나씩요.. 그러나 컴퓨터상에서 문자열은 특별해요.. 문자는 그냥 1바이트만 가지고 표현해버릴수잇지만 문자열은 '문자열의 끝'이 존재하죠.. "안녕하세요"가 실제 데이타인데 "안녕하"라고만 표현되버리면 안대겟죠.. 그래서 문자열의 각 끝에는 널문자가 존재해요 그냥 null(없다)라는 뜻으로.. 1바이트의 '0'(null)을 표식해줌니다.. 그래서 문자열은 char에 못들어가구여.. char[100]이면 99개문자로 이루어진 문자열이 들어갈수잇겟죠
char의 바이트 크기가 1byte인거는 C언어에서 정의되지않는 사항이다.
http://stackoverflow.com/questions/881894/is-char-guaranteed-to-be-exactly-8-bit-long
해괴한 답변들이...
asdfas가 기계구현에 오염된 생각을 가진 프로그래머의 좋은 예임. 모든게 결국 시스템상의 이진수로 표현된다는걸 알아서 나쁠건 없지만 프로그래밍을 처음 배워야하는 사람이 프로그래밍언어가 특정한 기능을 어떻게 구현해야 하는지도 알아야 할 필요는 없다고 봄
뭐래 병신 나 프로그래머아닌데
C언어 처음접하는사람이 char의 바이트크기가 아니라고 알고잇는게 더 필요없다고봄
1바이트
ㄴ 글 작성자인데 c가 많이 굉장히 어렵네요 이말씀밖에 못드리겠습니다.. 지금 위에글 읽으면서 모르는 용어 하나씩 찾아서 이해하고있는데;;
내 댓글이 좋아
너는 C언어를 배운다와 프로그래밍을 배운다의 차이부터 알고와야겠다...프로그래머가 아니라고 말하는거 보면 뭐 어디 전자공학과나 통신공학과 그런데서 C언어 수업들은거로 답글달고 있는거임? ㅋ 글쓴이도 마찬가지로 통신공학과면 도움이 될 수도 있겠네
C에서 char는 무조건 1바이트 아니냐?
삼댕 // C89에서 정의한 char의 크기는 최소 1바이트임.(최신 C도 다르지 않을거라 생각) 2바이트를 쓸지 100바이트를 쓸지는 언어의 구현에 따라 다름
sizeof(char) == 1은 항상 성립한다. CHAR_BIT이 8이 아닐 수도 있을 뿐.
ㄴ감사합니다 도움이 굉장히 많이 됐습니다 하하하하하;;;
그러므로 글쓴이는 책을 봐야해. C언어는 함부로 물어보거나 검색하는 게 아니야. 엄연히 표준이 있건만..
책도 지금 배우는 책이 좋은 책이면 상관없는데 구리면 좋은 책을 구하라고 하고 싶다.
문자열의 끝이 '\0'이어야 한다는건 c string에서나 그런거임. pascal string은 앞에 문자열 길이를 저장해서 '\0'이 붙을 필요가 없음
\\0
C언어얘기하고잇는데 파스칼이 왜나오냐.
ㄴ윤성우 보다 궁금해서 글 싸질렀는데 이렇게 될줄 몰랐습니다. 고의는 아니지만 죄송합니다;;;
님 잘못 아닙니다. C언어가 어려운 탓이죠 헤헤헤.. 낄낄낄..
"그러나 컴퓨터상에서 문자열은 특별해요.. 문자는 그냥 1바이트만 가지고 표현해버릴수잇지만 문자열은 '문자열의 끝'이 존재하죠.." 라는 문장이 오해를 사기 쉬울 것 같지 않냐? "C에서의 문자열은 특별해요.."로 시작했으면 모를까
http://stackoverflow.com/a/2098444
char가 16바이트인 시스템도 있다는데? CHAR_BIT라는 limit이 반드시 8이어야되는건 POSIX호환 시스템에서만 이라는데...ㄹㅇ C언어 애자같다
kukyak..//지랄 말꼬투리잡노.
16바이트 -> 16비트
프겔엔고수가만네요
CHAR_BIT 얘기하다보니 ㅅㅅㅅ가 생각난다. 퇴근하고 표준문서 들고 쳐발라준다던 그 분은 아직도 퇴근 안하셨나
ㅅㅅㅅ 보고 싶다.. 마치 국제표준을 보는듯한