sq(Linux環境下)

x * x> = 0は必ずtrueですか?数学では、この式が真であることを100%確認できるかもしれませんが、コンピュータではそうではなく、非常に小さな負の数に等しい場合があります。

#include <stdio.h>
#include <stdlib.h>

int sq(int x) {
    return x*x;
}

int main(int argc, char *argv[]) {
    int i;
    for (i = 1; i < argc; i++) {
    int x = atoi(argv[i]);
    int sx = sq(x);
    printf("sq(%d) = %d\n", x, sx);
    }
    return 0;
}

パラメータを使用したいくつかの実行の結果を見てみましょう。
ここに画像の説明を挿入
-1や12などの数値が正しく、次の数値はすべて数学的に間違った値であることがわかります。これは、プログラムで入力した数値がint型(整数型)として定義されており、コンピューターのint型に最大値と最小値があるためです。この値を超えると、int型の範囲は(-65536、65535)になります。オーバーフローが発生します。

おすすめ

転載: blog.csdn.net/xiongdan626/article/details/90551965