Renesas Synergy™

FAQ 105950 : 次の演算の処理仕様を教えてください。

Q: 質問

次の演算の処理仕様を教えてください。    

1. 負の整数の除算 "/" の、結果の切り捨て方向。     

2. 負の整数の剰余算 "%" の、結果の符号。     

3. 負の整数の右シフト ">>" の動作が、算術シフト (MSBに符号ビットが入る) または論理シフト (MSBに 0 が入る) のいずれか。  


A: 回答

 

  1. 負の整数の除算 "/" 結果は、 0 (ゼロ)の方向に切り捨てられます。
    演算結果
    (-10) / 3
    (-10) % 3
    10 / ( -3)
    10 % ( -3)
    (-10) / (-3)
    (-10) % (-3)
    -3
    -1
    -3
    1
    3
    -1

     

  2. 負の整数の剰余算 "%" 結果符号は、被除数の符号に合わせます。
    演算結果
    (-10) % 3
    10 % ( -3)
    (-10) % (-3)
    -1
    1
    -1
    (注意) オプション-fround_under_div(-fRUD)を指定した場合、除数の符号に合わせます。

     

  3. 負の整数の右シフト ">>" は、算術シフトです。MSBには、符号ビットが入ります。

     

適用製品

M16Cシリーズ,R8Cファミリ用C/C++コンパイラパッケージ [M3T-NC30WA]
他にご質問がございましたら、リクエストを送信してください