C言語における負の数の剰余演算(%演算子)の挙動を徹底解説
C言語では、負の数に対して剰余演算(%演算子、モジュロ)を行うと、結果の符号がどうなるのか気になる方も多いでしょう。実はC言語の剰余演算には明確なルールがあり、結果の符号は左側のオペランド(被除数)に依存します。本記事では、具体的なサンプルコードとその出力結果をもとに、この挙動をわかりやすく解説します。
演算子の優先順位と評価の流れ
まず、% 演算子と / 演算子が混在した式の例を見てみましょう。この2つの演算子は優先順位が同じであるため、左から右へと評価されます。
サンプルコード1
#include<stdio.h>
int main() {
int a = 7, b = -10, c = 2;
printf("Result: %d", a % b / c);
}出力結果
Result: 3
この例では、% と / の優先順位は同じなので、まず a % b が計算されます。7 % (-10) の結果は 7 となり、これをさらに c = 2 で割ると 3 が出力されます。
ポイントは、a % b の計算において左側のオペランド(a = 7)の符号が結果に引き継がれるという点です。次の例で、この挙動をより詳しく確認していきましょう。
片方が負の数の場合
サンプルコード2:被除数が正・除数が負
#include<stdio.h>
int main() {
int a = 7, b = -10;
printf("Result: %d", a % b);
}出力結果
Result: 7
7 % (-10) の場合、左側のオペランドが正のため、結果も正の 7 になります。
サンプルコード3:被除数が負・除数が正
次に、a と b の符号を入れ替えてみます。
#include<stdio.h>
int main() {
int a = -7, b = 10;
printf("Result: %d", a % b);
}出力結果
Result: -7
今度は左側のオペランドが負のため、結果は負の -7 となります。
両方が負の数の場合
両方のオペランドが負の場合も、同様に左側のオペランドの符号が結果に反映されます。
サンプルコード4
#include<stdio.h>
int main() {
int a = -7, b = -10;
printf("Result: %d", a % b);
}出力結果
Result: -7
まとめ:C言語の剰余演算の符号ルール
ここまでの例から、C言語における剰余演算の符号に関するルールを整理できます。
- 結果の符号は、常に左側のオペランド(被除数)の符号と一致する
- 右側のオペランド(除数)の符号は、剰余の結果に影響しない
- これは C99 規格以降で標準化された挙動であり、切り捨て除算(ゼロ方向への丸め)と整合している
なお、Pythonなどの言語では除数の符号に合わせるなど、言語によって剰余の符号規則が異なる点にも注意が必要です。移植性の高いコードを書く際は、負の数を含む剰余演算の扱いに十分留意しましょう。
-
Googleスプレッドシートで負の数(マイナスの数値)を赤色で表示する2つの方法
この記事では、Googleスプレッドシートで負の数(0未満の数値)を赤色で表示する方法を解説します。さまざまなセルにマイナスの値が混在するデータセットを扱っている場合、それらをまとめて強調表示できると、該当する数値をひと目で把握できて非常に便利です。0以上の値の色はそのまま維持されます。さらに、後から値を修正した場合(例:マイナスの値をプラスに変更した場合)も、表示色は自動的に切り替わります。 Googleスプレッドシートで負の数を赤色で表示する方法 Googleスプレッドシートで負の数を赤色で強調表示するには、主に以下の2つの方法があります。 条件付き書式を使う方法 カスタム数字の表示形
-
Excelで負の数を赤く表示する4つの簡単な方法
Excelでは、特定の値を持つセルを目立たせたい場面がよくあります。特に、負の値と正の値を視覚的に区別できるようにしておくと、データが格段に読みやすくなります。この記事では、Excelで負の数を赤色で表示するための、いくつかの簡単な方法を紹介します。 練習用ワークブックはこちらからダウンロードできます。 Excelで負の数を赤く表示する4つの簡単な方法 ここでは、Excelで負の数を赤色にする4つの簡単な方法を解説します。サンプルとして、「Main Balance(元残高)」「Transaction(取引額)」「Present Balance(現在残高)」を含むデータセット(B4:D8)を使用