〔前の画面〕
〔クリックポイント〕 〔最新の一覧〕
〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了〕
2014/7/13(日)00:04 - 松田七美男 - 42-148-162-150.rev.home.ne.jp - 3809 hit(s)
たぶんそうですよね.Ver 4.6.5(たぶん仕様は4.4から変化してないでしょう)の
ソースから関連部分を拾ってみると.
standar.cにintの内部関数f_intの定義があって,
void
f_int(union argument *arg)
{
struct value a;
(void) arg; /* avoid -Wunused warning */
push(Ginteger(&a, (int) real(pop(&a))));
}
f_intから呼び出される,Gintegerとrealがeval.cにあります.
struct value *
Ginteger(struct value *a, int i)
{
a->type = INTGR;
a->v.int_val = i;
return (a);
}
double
real(struct value *val)
{
switch (val->type) {
case INTGR:
return ((double) val->v.int_val);
case CMPLX:
return (val->v.cmplx_val.real);
case STRING: /* is this ever used? */
return (atof(val->v.string_val));
default:
int_error(NO_CARET, "unknown type in real()");
}
/* NOTREACHED */
return ((double) 0.0);
}
これだけみるとキャスト(int)により値が定まるといってよいでしょう.
キャストの実装を私は考えたことがございません.
〔ツリー構成〕
【2817】 intについて 2014/7/12(土)02:56 RK (390) |
┣【2825】 re(5):intについて 2014/7/13(日)00:04 松田七美男 (1002) |
〔前の画面〕
〔クリックポイント〕 〔最新の一覧〕
〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了〕
※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.