小数を配列から取り出したときにintになってしまう
解決したいこと
c言語でdouble型の配列に小数が入っている状況です。
配列から要素を取り出すと勝手に整数(int)になってしまいます。
文字列で式を受け取り、四則演算の結果を返すパーサーを作っています。
割り算がある関係上double型の計算結果を配列に入れていきたいのですが、配列から数値を取り出したときに
なぜかintになってしまいます。
該当するソースコード
//計算結果を積むスタック
double stack[32] ;
int sp=0 ;
...
int pop(void){
sp-- ;
return(stack[sp]) ;//ここでおそらくintになってしまう
}
double top;
double bottom;
//四則演算の計算をするところ
switch (node->kind) {
case ND_ADD:
top = pop();
bottom = pop();
push(bottom + top) ;
printf(" add rax, rdi\n");
break;
...
自分で試したこと
pop()を呼んで、関数内で配列から要素を取り出し、返り値をdouble型の変数top,bottomに入れても勝手にintになってしまいます。
キャストしてみたりしたのですがうまくいきません。
たとえば、stack[sp]の中に
[0]1.25
といった数値が入っていたとして、pop()を介して変数topの要素を取り出そうとすると1になってしまいます。
ソースコードは関係していると思われる部分を載せました。intになってしまう理由について教えていただければ幸いです。
0