sq(Linux环境下)

    xiaoxiao2023-11-23  128

    x * x >= 0 一定成立吗?在数学里或许我们可以百分百的确定这个式子成立,但是在计算机上却有可能不成立,还会等于一个非常小的负数。

    #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),一旦超过这个值就会发生溢出。

    最新回复(0)