基本信息
文件名称:计算机系统基础Linux实验报告.doc
文件大小:3.28 MB
总页数:17 页
更新时间:2025-05-21
总字数:约4.45千字
文档摘要

学生实验报告

萨荼Satu

实验项目名称:数据的表示实验学时:

同组学生姓名:实验地点:

实验日期:实验成绩:

批改教师:批改时间:

一、实验目的和要求

熟悉数值数据在计算机内部的表示方式,掌握相关的处理语句。

二、实验仪器和设备

Linux系统

Ubuntu22.04.5LTS

三、实验过程

(1)“-22”和“-22u”的结果一样吗?为什么?请编写程序验证。

#includestdio.h

intmain(){

??intresult1=(22);

??intresult2=(22u);

??printf(22?=%d\n,result1);

??printf(22u=%d\n,result2);

??if(result1==result2){

????printf(两个表达式结果一样。\n);

??}else{

????printf(两个表达式结果不一样。\n);

??}

??return0;

}

(2)运行下图中的程序代码,并对程序输出结果进行分析。

(3)运行下列代码,并对输出结果进行分析。

#includestdio.h

intmain()

{

??unionNUM

??{

????inta;

????charb[4];

??}num;

??num.a=0

??printf(0x%X\n,num.b[2]);

??return0;

}

(4)请说明下列赋值语句执行后,各个变量对应的机器数和真值各是多少?编写一段C语言程序代码并进行编译,观察默认情况下,编译器是否会报warning。如果有warning信息的话,分析为何会出现。

inta=2147483648;

intb=-2147483648;

intc=2147483649;

unsignedshortd=65539;

shorte=-32790;

#includestdio.h

intmain(){

??inta=2147483648;

??intb=-2147483648;

??intc=2147483649;

??unsignedshortd=65539;

??shorte=-32790;

??printf(a=%d,十六进制:0x%X,a,a);

??printf(b=%d,十六进制:0x%X,b,b);

??printf(c=%d,十六进制:0x%X,c,c);

??printf(d=%u,十六进制:0x%X,d,d);

??printf(e=%d,十六进制:0x%X,e,(unsignedshort)e);

??return0;

}

报错原因:常数超出了int能表示的范围

(5)编译运行以下代码,并至少重复运行3次。

1.给出每次运行的结果截图

2.每次运行过程中,是否每一次循环中的判等结果都一致?为什么?

3.每次运行过程中,每一次循环输出的i、x和y的结果分别是什么?为什么?

#includestdio.h

intmain()

{

??doublex=23.0000221,y=24.0000221,z=1.0;

??for(inti=0;i10;i++){

????if((y-x)==z)

??????printf(equal\n);

????else

??????printf(notequal\n);

????x+=z;

????y+=z;

????printf(%d,%f,%f\n,i,x,y);

??}

??return0;

}

(2)判等结果并不总一致,随着循环推移,浮点误差可能导致(y-x)==z为false。

(3)每轮结束x和y都+1,i、x、y依次变大,但由于浮点误差,y-x可能不再精确等于z。

四、实验结果与分析

完成五项Linux实验,掌握Linux编译程序基本用法。

实验项目名称:开发与调试实验学时: