2011-12-22 9 views

答えて

5

括弧の外側のペアは必要ありません。returnは機能ではありません。

それ以外は、私は問題を見ることができません...逆参照の前にポインタをキャストして、適切なビット数を読み取ってから「アップキャスト」をintに送ります。

更新:あなたのコメントに基づいて、たとえばaで指される値はbで指される値よりも小さいので、符号付きの型に変換する必要があります。私はそれが必須かどうかは100%ではないが、少なくともそれは何が起こっているかはかなり明確だとは思えない。それがさらに明確にするため、複数の文に分けることができもちろん

私はそれを書くだろうか、おそらくだ
int compare_acd(const void *a, const void * b) 
{ 
    const ADC_VALUE_TYPE va = *(ADC_VALUE_TYPE) a; 
    const ADC_VALUE_TYPE vb = *(ADC_VALUE_TYPE) b; 

    /* Cast to int to get signed response if a < b. */ 
    return (int) va - (int) vb; 
} 

+0

uint - uintを減算すると常に負でないか、間違っているため、削除(int)すると負の値が返されないと思いますか? –

+0

ここに暗黙の括弧が入っています。おそらく '(int)va - (int)vb'は実際に'(int)(va - (int)vb) 'のようなものでしょうか?私はおそらく間違っていますが、私は妄想しています。私は '((int)va) - ((int)vb)' –

+0

(最後のコメントは気にしないでください)と書くと思います。安全。キャスティングは減算の前に行われます。 http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence –

関連する問題