计算机基础学习日志(二)sq函数

计算机基础学习日志(二)sq函数

    • 代码功能
    • 代脉内容
    • 运行结果
    • 结果分析

代码功能

模拟计算机内部进行乘法运算时发生溢出的情况,x*x(x被定义为int型)的结果不是永远大于零的。

代脉内容

#include 
#include 

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

运行结果

计算机基础学习日志(二)sq函数_第1张图片

结果分析

测试一1没有进入循环故没有输出。
测试二和四的结果都小于2147483647,故可以正确输出。
测试三的参数65535的输出为负数,表示发生了溢出。
测试五和六的参数分别为400000,500000比测试三参数大,但输出为正数,说明被截断后的32位的第一位为0,故显示为正数。

你可能感兴趣的:(计算机基础学习日志)