次のCコードを検討してください-
char sum_char(char a,char b)
{
char c = a+b;
return c;
}
それには-
- 2 番目のパラメーターを符号拡張に変換します。
- 署名された拡張パラメーターを b としてスタックにプッシュします。
- 最初のパラメーターを符号拡張に変換します。
- 署名された拡張パラメーターを a としてスタックにプッシュします。
- a&bを足して、結果をcharにキャストしてcに格納する。
- C は再び符号拡張されます。
- 符号拡張された c は戻り値レジスタにコピーされ、関数は呼び出し元に戻ります。
- 結果の呼び出し元関数を再度格納するには、int を char に変換します。
私の質問は -
- 誰がこれをしますか?
- そんなに多くの変換を行う必要性は何ですか?
- マシン/コンパイラのパフォーマンスを低下/向上させますか?
- パフォーマンスが低下している場合、パフォーマンスを向上させるにはどうすればよいですか?