2016-12-07 26 views
2

関数の戻り値を型キャストするという私の同僚は、Cでは定義されていませんが、彼の主張をサポートするものは何も見つかりません。C関数の戻り値を型キャストできますか?

私はここを参照してください、その型キャスト関数ポインタが悪いを知っている: Casting a function pointer to another type

をしかし、私は次のコードは、許容できると明確に定義されたであろうことを確認したい:

// Some function 
int ret = foo(bar); 

// Some variable with some different type 
unsigned int a; 

// Cast function result to match variable type 
a = (unsigned int) foo(bar); 
以外
+1

私はあなたの同僚がこれを信じている理由を想像することはできません - それは最も確かにあなたの同僚の特徴です。 'c'言語です。これは一般的な(必要な)機能です。 – KevinDTimm

+0

戻り値はちょうどrvalueです – user3528438

+0

何らかの証拠があればすべてのクレームをサポートする必要があります。あなたの同僚は持っていますか?そうでなければ、それは「投機」と呼ばれます。 @EugeneSh。 –

答えて

2

コメント内で返された内容は、戻り値のキャストについて繰り返し述べるthisのような記事で引数を取り戻すことができます。

私たちが今使っている簡単な例の1つは、round()関数の戻り値をキャストすることです。

これは非常に些細なので、C Standard, page 567 of this pdfに記載されています。整数に浮動から上記の変換において

、(キャスト)の使用は、 は(キャスト)ラウンド(X)、(キャスト)RINT(X)、 (キャスト)nearbyint(Xで置き換えることができるxは

+0

あなたの主張をバックアップしてくれてありがとう! – phreaknik

関連する問題