간단한 프로그램을 실행 중입니다.다른 유형의 변수에 대한 포인터 지정
다음은 코드입니다.
#include<stdio.h>
#include<conio.h>
int main(){
char c,*cc;
int i;
long l;
float f;
c='z';
i=15;
l=77777;
f=3.14;
cc=&c;
printf("c=%c cc=%u\n",*cc,cc);
cc=&i;
printf("i=%d cc=%u\n",*cc,cc);
cc=&l;
printf("l=%ld cc=%u\n",*cc,cc);
cc=&f;
printf("f=%f cc=%u\n",*cc,cc);
return (getch());
}
그래서 내 지식에 따라 정수의 크기는 내가 CC는 문자 포인터이기 때문에 정수 변수의 첫 번째 바이트를 가리켜 야를 포인터는 char 정수 변수를 할당하고 그래서 문자보다 더 남아있다. 그래서 출력을 실행할 때 첫 번째 printf 줄만 올바른 출력을 주어야하며 다른 줄은 일부 주소 나 일부 쓰레기 값을 인쇄해야합니다.
내 경우에는 두 번째 줄 printf 또한 15 정수 값에 할당 된 올바른 값을 제공합니다. 가비지를 줄 필요가 있다고 생각하지만 value.please가 어떻게되는지 알려주시겠습니까?
여기 내 결과물입니다.
c=z cc=2686791
i=15 cc=2686780
l=-47 cc=2686776
f=0.000000 cc=4199093
그래서 (주소
&i
의 바이트 부호있는 바이트로 해석 할 때-24
을 인0xe8
입니다) 그러면 오류가 발생합니까? 내가 맞습니까? –@google 오류가 발생하지 않습니다. 숫자를 모듈로 256으로 자릅니다. (또는 'char'이 8 비트를 초과하는 것으로 보이는 경우 다른 숫자가 표시됩니다.) –
나중에 미안하지만 내 의견은 잘못되었습니다. 다른 번호를 인쇄 할 것입니다. –