sq.c代码解释

    xiaoxiao2025-04-17  13

    代码功能

    验证定义一个int x,x*x不是永远大于零的。

    完整代码

    #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; }

    测试结果

    结果解释

    第一行只a.out一个参数所以没有输出,i是从1开始的,1<1不成立,没有进入循环,没有输出。

    int i; for (i = 1; i < argc; i++)

    第二个144<2147483647,第四个1600000000<2147483647正常输出 参数为50000时,正常情况是正数,但结果为负数,发生了溢出,同理65535。 参数为400000,500000时,平方数会更大,但结果为正数,只能说明平方数被截断之后的32位中第一位为0,所以是正数,而50000被截断后的32位中第一位是1所以为负数。

    最新回复(0)