我尝试编写程序 whitch 使用堆栈来呈现某种数据(char、double 或 string)。
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 时才正确。为什么会这样?
PS 我不想更改 data_buffer 的类型,因为它还包括不同长度的字符和字符串。
工作示例(!! - 在将 n 写入缓冲区之前测试输出:
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