CSAPP lab1 data lab
发布人:shili8
发布时间:2024-12-29 10:30
阅读次数:0
**CSAPP Lab1: Data Lab**
在本实验中,我们将学习如何使用 C语言操作整数、指针和数组。我们的目标是完成一系列挑战性的任务,称为 "Data Lab"。
###1.1 整数运算首先,让我们来看看如何进行基本的整数运算。
c#include <stdio.h> int main() { int x =5; int y = -3; printf("x + y = %d ", x + y); // x + y =2 printf("x - y = %d ", x - y); // x - y =8 printf("x * y = %d ", x * y); // x * y = -15 printf("x / y = %f ", (float)x / y); // x / y = -1.666667 return0; }
###1.2 指针运算接下来,我们将学习如何使用指针进行基本的运算。
c#include <stdio.h> int main() { int x =5; int* px = &x; // px 是 x 的地址 printf("px = %p ", (void*)px); // px =0x7fffffffefb8 *px =10; // 将 px 指向的值设为10 printf("*px = %d ", *px); // *px =10 return0; }
###1.3 数组运算现在,让我们来看看如何使用数组进行基本的运算。
c#include <stdio.h> int main() { int arr[5] = {1,2,3,4,5}; printf("arr[0] = %d ", arr[0]); // arr[0] =1 printf("arr[4] = %d ", arr[4]); // arr[4] =5 return0; }
###2.1 位运算接下来,我们将学习如何使用位运算进行基本的操作。
c#include <stdio.h> int main() { int x =15; //00001111 printf("~x = %d ", ~x); // ~x = -16 (11110000) printf("x &1 = %d ", x &1); // x &1 =1 printf("x |3 = %d ", x |3); // x |3 =15 printf("x ^5 = %d ", x ^5); // x ^5 =14 return0; }
###2.2 移位运算现在,让我们来看看如何使用移位运算进行基本的操作。
c#include <stdio.h> int main() { int x =15; //00001111 printf("x << 1 = %d ", x << 1); // x << 1 =30 (00011110) printf("x >>2 = %d ", x >>2); // x >>2 =3 printf("x >>>4 = %d ", x >>>4); // x >>>4 =0 return0; }
###3.1 位运算和指针最后,让我们来看看如何使用位运算和指针进行基本的操作。
c#include <stdio.h> int main() { int x =15; //00001111 int* px = &x; printf("~px = %p ", (void*)~px); // ~px =0x7fffffffefb8 printf("px &1 = %d ", *px &1); // px &1 =1 return0; }
### 总结在本实验中,我们学习了如何使用 C语言进行基本的整数、指针和数组运算。我们还学习了如何使用位运算和移位运算进行基本的操作。这些知识对于理解更复杂的计算机科学概念是必不可少的。
### 提示* 在实验中,尝试不同的值来观察结果。
* 使用调试器或打印语句来检查变量的值。
*仔细阅读 C 标准和文档,以了解语言的特性和限制。