C语言笔记

本文介绍了程序优化的方法,包括通过移位操作来替代乘除法运算,以此减少CPU周期消耗。此外,还提到了如何利用编译器进行表达式优化,如常量折叠等技术,以减少内存访问并提高程序运行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序优化:加减法占用1个机器周期;乘法运算占用5-6个机器周期;除法占用50个周期;编写代码尽量使用一些操作代替除法操作。

移位操作:数据向左移动一位相当于乘以2,右移一位相当于除以2,使用移位操作可以将整数的乘除法转换为对整数的移位操作

例: /devided 分开的   

 1 #include<stdio.h>
  2 int main()
  3 {
  4     int a =12;
  5     printf("a divided by 4 :%d\n",a>>2);
  6     printf("a multiplied by 5:%d\n",(a<<2)+a);
  7     return 0;
  8 }

表达式优化:(常量折叠)执行次数

表达式优化:(存储问题)减少内存访问可以提高程序运行效率







### C语言学习笔记与资料整理 C语言是一种通用的、过程式的计算机编程语言,支持结构化编程、 lexically scoped 语句以及递归函数调用[^1]。以下是关于C语言学习的一些关键点和参考资料: #### 1. 循环结构 C语言提供了多种循环结构以实现重复操作,包括`while`、`do...while`和`for`语句。以下是一个使用`while`循环的示例代码[^1]: ```c #include <stdio.h> int main() { printf("加入比特\n"); int line = 0; while(line <= 20000) { line++; printf("我要继续努力敲代码\n"); } if(line > 20000) printf("好offer\n"); return 0; } ``` #### 2. 随机数生成与用户交互 在C语言中,可以通过`rand()`函数生成随机数,并结合`time()`函数设置随机种子以确保每次运行时生成不同的随机数。以下是一个猜数字游戏的示例代码[^2]: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(0)); int number = rand() % 100 + 1; // 生成1到100之间的随机数 int count = 0; int a = 0; printf("我已经想好了一个1-100之间的数\n"); do { printf("请猜数:"); scanf("%d", &a); count++; if (a > number) { printf("你猜的数大了\n"); } else if (a < number) { printf("你猜的数小了\n"); } } while (a != number); printf("太棒了,你用了%d次就猜对了答案\n", count); return 0; } ``` #### 3. 整数逆序求解 对于整数逆序问题,可以利用`%`运算符获取个位数,`/`运算符去掉个位数,逐步构建逆序结果。以下是一个整数逆序的示例代码[^2]: ```c #include <stdio.h> int main() { int x; scanf("%d", &x); int digit; int ret = 0; while (x > 0) { digit = x % 10; ret = ret * 10 + digit; printf("x = %d, ret = %d, digit = %d\n", x, ret, digit); x /= 10; } printf("%d", ret); return 0; } ``` #### 4. 常见错误及调试技巧 在C语言编程过程中,常见的错误包括数组越界访问、指针使用不当、内存泄漏等。为避免这些问题,建议养成良好的编程习惯,例如初始化变量、检查边界条件、使用调试工具(如`gdb`)等。 #### 5. 学习资源推荐 - **书籍**:《C程序设计语言》(The C Programming Language),由Brian W. Kernighan和Dennis M. Ritchie编写。 - **在线教程**:菜鸟教程(https://www.runoob.com/cprogramming/index.html)、GeeksforGeeks(https://www.geeksforgeeks.org/c-programming-language/)。 - **实践平台**:LeetCode、Codeforces、HackerRank等提供丰富的C语言练习题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值