2013-02-26 3 views
0

에 나는 숯불에 전달하려는 다른 데이터 유형의 무리가 있지만 내가 전달의 int에 대한 일반적인 형식을 수행 할 때다른 데이터 유형을 char로 유형 변환합니까? C

char number=(char)one; 

을 그것은 단지 정수 작동합니다. 다른 데이터 유형을 사용하면 문자열 표현을 원할 때 숫자 값을 얻을 수 있습니다. 가장 쉬운 방법은 무엇입니까? 오후 8시 30 분 P.S. 이 방법으로 캐스팅을 시도 할 때도 포인터 크기 문제가 있기 때문에 철저히 대답을 설명하십시오. 오직 c 문법을 사용하십시오

+1

은 몇 가지 예를 적어주십시오 [9, 0] 하나 = 작동합니다. 'char'는 필수적인 데이터 유형입니다. 그래서 당신이 원하는 것이 확실하지 않습니다. – adamdunson

+0

'char'는 문자입니다 (adamdunson이 말했듯이) 정수입니다. 문자열이 아니므로 "문자열 표현"이 무슨 뜻인지 잘 모르겠습니다. – melpomene

+1

당신이하고 싶은 것은 "캐스팅"하지 않으며, 당신은 포맷하고 싶습니다. –

답변

3

데이터 유형의 문자열 표현을 찾고 있다면 원하는 것은 sprintf 기능이라고 생각합니다. 예를 들어, 플로트 타입의 당신은 할 것 :

float example = 3.6; 
char temp[64]; // Allocate a string of size 64. 
sprintf(temp, "%f", example); 

이 온도에 example의 캐릭터 라인 표현을 저장합니다.

+0

인쇄하지 않고이 작업을 수행 할 수 있습니까? –

+1

다른 방법이 있지만 적어도 부동 소수점 유형에는 사용하지 않으려합니다. 'sprintf()'는 화면이나 프린터에 아무 것도 인쇄하지 않는다. –

+0

그것도 캐스팅하더라도 number 값을 반환하고 uid_t 또는 struct와 같은 데이터 유형은 무엇입니까? utsname –

1

char은 정수 유형이며 정수로 변환 할 수 있습니다 (256 미만).

기타 데이터 유형을 사용하면 문자열 표현을 원할 때 숫자 값을 제공합니다.

기술적으로 문자열은 char이 아닙니다. char 배열이므로 결국 포인터로 붕괴됩니다.

각 유형에 대해 고유 한 toString() 함수를 작성하고 이에 따라 형식화 된 문자열을 반환해야합니다.

가장 쉬운 방법 :

0

sprintf()이의이 한 번에,이 라인을 통해 한 단어 이동 개념이 정확 얻을하자 사용할 수 있습니다.

char number=(char)one; 
  • char

    은 I 형 char의 변수를 생성하고있어 수단 선언한다. char은 1 바이트 (8 비트) 데이터 유형입니다. 일반적으로 단일 문자를 유지하는 데 사용되지만 근본적으로 바이트입니다. 0x00 (a.k.a 0)에서 0xFF (a.k.a 255)까지의 값을 보유 할 수 있습니다.
  • number

    char

  • =가 할당 연산자 형식의 변수의 이름; 당신이 number

  • (char)의 값을 설정하려고하는 것은 "의 변수의 타입이 나를 따라 무엇이든하는 char로 해석"를 의미한다. 이것은 "casting to char"이라고합니다. (아니요 "문자로 전달").

  • 코드에서 알 수없는 것은 one입니다. 그러나 char 또는 0에서 255 사이의 정수를 제외하고는 할당이 의미가 없습니다.

요약은 number는 1 바이트 값을 보유 할, 당신은 그것을 다른 뭔가를 할당하는 경우, 당신은 아마 바람직하지 않은 결과를 얻을 수 있습니다 단지 문자, 점이다.

+0

위의 코드는 단지 예제 일뿐입니다. 하나는 int 변수라고 가정합니다. 어떻게 캐스팅을 시도했는지 보여 주려고했습니다. 그래도 감사합니다 –

0

아마도이 같은 후 있습니다

char number = '0' + one; 

관련 문제