1
나는 프로그램 whitch가 현재의 어떤 종류의 데이터 (char, double 또는 string)를 위해 스택을 사용하려고 노력한다.char [] 버퍼에 두 개의 값 저장하기
char *data_buffer;
double n;
...
data_buffer = (char*)malloc(4096 * sizeof(char));
...
*(data_buffer + buffer_top) = n; //buffer_top - just offset for first byte
...
printf("%f ", (double)*(data_buffer + buffer_top));
변수 data_buffer 및 buffer_top이 정확합니다. 그러나 출력이 이상합니다. n < 127 일 경우에만 수정됩니다. 왜 그럴 수 있습니까?
P. 나는 char 및 다른 길이의 문자열을 포함하기 때문에 data_buffer 유형을 변경하고 싶지 않습니다.
126 //push
!! 1.260000e+02
127 // push
!! 1.270000e+02
128 // push
!! 1.280000e+02
. // pop
-128.000000 //error
. //pop
127.000000 //ok
. //pop
126.000000 //ok
123456 // push
!! 1.234560e+05
. //pop
64.000000 //error
'buffer_top'가'double'의 정렬 요구 조건의 배수로 알려져 있지 않다면 버퍼와 임시'double' 객체 사이에 바이트를 복사하여 구현해야합니다. 서면으로, 이것은 C 표준에 의해 정의되지 않은 동작을 가질 수 있습니다. –