1.不用第三变量,交换两个变量的方法:
a = a ^ b;
b = a ^ b;
a = a ^ b; //( a ^ b ) ^ a == b
或者
a = a + b;
b = a - b;
a = a - b;// (a + b) - a == b
(注:以上两种方法不适应浮点型变量,表示方法和精度的原因)2.计算一个变量里‘1’的个数:
f(char x){
for(int i=0; x; x &= x-1,i++);
return i;
}
解释:假设 x 为 11010100
x-1 为 11010011
x & (x -1)为 11010000 ,到这里,我们发现结果不为零,且少了一个1。所以一次循环少个1,记录循环次数就行了。
另外:一个数如果是2的n次幂,那么他一定是1后加一些0,如1000, 1000000等。
那么 x & (x - 1)的结果为零,那么他就是2的n次幂。
3.让函数宏像函数一样使用
/*以下是宏定义*/
#define MACRO(c)\
do {\
if( c )\
{\
printf("hello!");
}\
}while(0) //do-while语句while()后应有一个“;”,这里有意舍去且条件永远为假,即内部语句只能执行一遍
/*以下是宏使用*/
MACRO(1);//此处的“;”看上去像语句末尾的分号,其实它是宏定义末尾舍去的分号,这样的do-while宏使用起来就像函数了
4.不用 if 的类 if 语句
(void)(DLL_Exit == DLL_ZERO_INFO && fputs("Size of address record is zero.\n\n", stderr));
利用“&&”运算符的短路原理,前边表达式的值能够决定后边的能否执行到。
5.花括号可以使宏得到返回值
会返回最后一条语句的赋值结果
#define even(x)\
({\
int y = x;\
(2*(y/2) == y ? y:y+1);\
})
另一说,花括号是为了替换do{}while(0)语句,使宏使用后能加“;”。
猜想,花括号所代表的语句块的值就是花括号内最后一条语句的值。(待验证)
6. 函数型宏定义返回值
#include <stdio.h>
#define even(x, ret)\
{\
int y = x;\
ret = (2*(y/2) == y ? y:y+1);\
}
int main(void)
{
int ret;
int num = 10;
even(num, ret);
printf("num = %d\n", ret);
num++;
even(num, ret);
printf("num = %d\n", ret);
return 0;
}
相关推荐
C语言在开发中的应用博文汇总贴
自己成长的同时也不要忘记带动别人一起成长,前人种树,后人乘凉,我宁愿做种树人,让读者乘凉。 以下有些文章时间比较长了,这里只做汇总,随着个人能力的提升,不可否认有些文章中描述的有不正确或者不恰当的地方,如果您看到了,请帮忙指出,感谢您对我的支持。 一、C基础 关于C语言中输出格式 C语言指针分析(一) 浅谈C之精华—指针 C语言关键字static的绝妙用途 C语言结构体深度剖析 对嵌入式开发C语言...
C语言学习笔记:(四)算法的5种表示方法
本节所用例题为计算5!。例如:S1:令t=1;S2:令i=2;S3:使t与i相乘,将结果放在t中;S4:使i值加1;S5:若i的值不大于5,返回重新执行S3、S4与S5;若i的值大于5,则算法结束。以上算法便为计算5!算法的自然语言描述。用自然语言表示算法虽通俗易懂,但文字冗长,易出现歧义。故除了简单问题外,一般不使用自然语言表示算法。(1)流程图是用一些............
C语言与算法学习完整指南
C语言是一种广泛使用的计算机编程语言,以其高效性和灵活性而闻名。它主要用于系统软件开发,同时在应用软件领域也有重要影响。C语言的特点是接近硬件操作,强调对内存的控制,这使得它成为嵌入式开发和性能要求高的应用首选语言。函数是一组一起执行一个任务的语句。在C语言中,函数的定义包含了返回类型、函数名、括号内的参数列表以及函数体。函数的声明告诉编译器函数的名称、返回类型和参数列表。声明是必要的,它使得函数可以在主调函数之前被定义或实现。以下是一个函数定义与声明的例子:// 函数声明");
C语言---比较常用的运算技巧
本文介绍几个常用的计算技巧实现某一目的 大部分来源于内核的实现 1、小计算宏 1.#define OFFSET(type, member) (size_t)&( ((type*)0)->member) 2.#define ROUND_UP(x, align) ((x + (align - 1)) &~ (align - 1)) 3.#define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) =
C语言基础:五种经典排序算法的实现
冒泡排序是一种简单直观的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。希尔排序(Shell Sort)是基于插入排序的一种算法,由Donald Shell于1959年提出。它通过将原始数据分成若干子序列,分别进行直接插入排序,从而达到减少数据交换的次数、加快排序速度的目的。希尔排序的关键在于间隔序列的设定,通常被称作增量序列。大O表示法是一种用来描述算法运行时间或空间需求的函数关系。
C语言编程:256字节内实现Cordic算法与fbdev图形显示
本文还有配套的精品资源,点击获取 简介:本教程介绍如何在仅限256字节的空间内使用C语言进行编程,并涉及Cordic算法、Linux操作系统和fbdev驱动程序的应用。C语言以其高效和灵活性著称,而Cordic算法特别适合资源有限的环境。Linux内核提供了fbdev驱动程序,允许直接控制显示内存,适合嵌入式开发。本教程将指导读者如何在Linux环境下使用C语言和fbdev...
C语音常用的位运算技巧
针对通信领域常用的位运算
常用算法设计方法(C语言)
对于有志参加ACM的同学非常有参考价值,对于一般工程师来说也可以得到一些启发. 是我以前学习的资料, 非常珍贵
C语言算法题的一些技巧
1.floor函数为向下取整函数。floor(x)可以返回X的整数部分。如果想实现四舍五入的效果,可以用floor(x+0.5)。 2.π的表示方法。const double pi = 4.0 * atan(1.0)。atan为反正切函数。 3.想要获取程序的执行时间,可以用clock()函数,除以clocks_per_sec得到的值以秒为单位。注意需要引入time.h头文件。 但是这个时间会...
c语言的经典算法(很经典的算法技巧)
该文件中包含了很多关于c语言的知识和技巧,对提高c语言水平大有裨益
jmeter问题系列:Begin size 0 is not equal to fixed size 5
Begin size 0 is not equal to fixed size 5 ,问题的解决
C语言中的逻辑运算符、位运算符及其应用技巧
是时候总结一波逻辑运算符和位运算符了。。。。。。 其实是更想总结一下位运算符的使用小技巧来体现其实用之处 逻辑运算符 && 与:A && B,只要有一个条件为false,则结果为false || 或:A || B,只要有一个条件为true,则结果为true ! 非:!A,若A为false,则结果为true。若A为true ,则结果为false 位运算符 &...
10分钟快速搭建OpenClaw(基于Windows+飞书)
OpenClaw 是一款功能强大的 AI 智能体工具,能够帮助用户管理邮件、日历等日常事务。本文详细介绍了在 Windows11 系统上安装和配置 OpenClaw 的完整步骤,包括 Node.js 环境搭建、Git 安装、OpenClaw 部署以及飞书机器人创建与对接。通过简单的命令行操作和可视化界面配置,用户可以快速完成 AI 助手部署,实现智能办公自动化。文中还提供了飞书机器人权限设置等关键环节的图文指引,帮助用户轻松完成系统集成。
c语言工业控制算法大全,初学C语言程序设计的基本方法和技巧
C语言是一门应用最广泛的基础高级编程语言,有很多语言都是由它发展而来的,所以学习好C语言之后再学习任何一种编程语言都会轻松上手。无论哪所大学的计算机专科和本科都需要学习C语言《,C语言程序设计》是计算机专业的一门必修课程,也是学习如何编程的入门课。初学C语言的人都会觉得C语言不好学,感到无从下手。其实,按照我们现在的教学大纲和教学要求,只要同学们掌握一些方法,多读,多写,克服心理上畏难情绪,C语言...
STM32CubeMX实战:FreeRTOS内存管理5种方案全解析(附heap_4避坑指南)
本文深入解析了STM32CubeMX环境下FreeRTOS的5种内存管理方案(heap_1到heap_5),重点介绍了heap_4的优化策略与避坑指南。通过对比分析各方案的特点、性能指标及适用场景,帮助开发者根据项目需求选择最优内存管理策略,提升嵌入式系统开发效率与稳定性。
SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑
SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑
C语言编程技巧200例——在实例中学习C语言
C语言编程技巧200例——在实例中学习C语言 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到本资源仓库!这里为您提供了《C语言编程技巧200例,在实例中学习C语言》的全面例子集合。本资源旨在帮助您通过实例学习C语言编程的技巧与方法,使您在编程实践中能够更加熟练地应用C语言。 本资源包含200个精心挑选的编程实例,涵盖了C语言的基础知识、数据结构、算法、文件操作、网络编程...
【软碟通 | UltraISO】刻录光盘教程(制作U盘启动盘)
前言 今天老师说办公室的电脑有点卡,让我给重新安装一个 Windows 7 系统。于是就用软碟通(UltraISO)在 U 盘上刻录了一个 Windows 7 镜像,然后给老师重装了系统。顺便把制作 U 盘启动盘的教程也分享给大家。 软件 UltraISO v9.7.1.3519:点击跳转(密码:dd2k) 教程 将 U 盘插到电脑上,然后鼠标右击选择格式化(制作启动盘必须格式化) 点击文件-打开 选择下载好的系统镜像(如:Windows 7) 点击启动-写入硬盘映像 选择硬盘
c语言算法作用,非常全的C语言常用算法
《非常全的C语言常用算法》由会员分享,可在线阅读,更多相关《非常全的C语言常用算法(39页珍藏版)》请在人人文库网上搜索。1、精品、基本算法1交换(两量交换借助第三者)例 1 、任意读入两个整数,将二者的值交换后输出。main()int a,b,t;scanf(%d%d,&a,&b);printf(%d,%dn,a,b);t=a; a=b; b=t;printf(%d,%dn,a,...
测试用例设计工具大盘点:总有一款适合你
本文旨在帮助测试工程师、开发人员及团队管理者快速了解主流测试用例设计工具的特点、适用场景和选择逻辑。覆盖工具类型包括传统文档工具、开源管理工具、商业集成平台及新兴AI工具,范围涵盖中小团队到大型企业的不同需求。本文从“测试用例设计的痛点”切入,用生活案例解释核心概念;接着按“工具类型”分类盘点主流工具(附优缺点对比表);再通过“小团队/中大型团队/敏捷团队”等真实场景教你选工具;最后展望AI等未来趋势,帮你“一次学透,终身受用”。
buildozer
/home/chenyang/new_kivy/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/Lib
C语言100个算法经典例题
C语言100个算法经典例题 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到这个资源下载仓库!这里我们提供了《C语言100个算法经典例题》的资源文件,完全免费共享给需要的你。 本资源包含100个精选的C语言算法例题,覆盖了C语言编程的基础到进阶内容,旨在帮助编程爱好者通过实战练习来提升编程技巧和理解算法原理。 不论你是C语言的初学者,还是有一定基础的编程爱好者,这些例题都...
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
C语言实战105例源码介绍:实战技巧与算法的宝库
C语言实战105例源码介绍:实战技巧与算法的宝库 去发现同类优质开源项目:https://gitcode.com/ 在编程语言的世界中,C语言以其高效、灵活和底层的特性,一直占据着举足轻重的地位。为了帮助编程爱好者深入掌握C语言的实战应用,开源社区贡献了一个极具价值的资源——C语言实战105例源码。下面,我们将详细解析这个项目的核心功能、技术细节和应用场景。 项目介绍 C语言实战105例源码是一组...
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
c语言切面条对折的次数n,c语言竞赛和算法总结
《c语言竞赛和算法总结》由会员分享,可在线阅读,更多相关《c语言竞赛和算法总结(22页珍藏版)》请在人人文库网上搜索。1、目录1. 10进制转2进制-42. 啤酒和饮料 -53. 圆的面积 -54. 切面条 -65. 01字符串 -76. 字母图形 -87. 求n 个数的最大值,最小值,和-98. 杨辉三角形 -109. (2个数)公约数,公倍数(三种算法)-1110. 歌手大奖赛 -1611. ...
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
C 语言中的常见算法有哪些?C 语言中的常见数据结构有哪些?
算法是一系列解决问题的步骤或方法。它是一个精确的指令序列,用于解决特定问题或执行特定任务。算法可以描述为一种计算模型,它可以在有限的时间内将输入转换为输出。在C语言中,常见的算法包括:线性搜索算法:顺序查找或线性查找是一种简单的搜索算法,它按顺序逐个查找目标元素。二分搜索算法:二分查找算法是一种高效的搜索算法,它通过将有序数组分成两半并比较目标值来逐步缩小搜索范围。冒泡排序算法:冒泡排序算法是一种简单的排序算法,它通过多次比较和交换相邻元素来将最大的元素逐步移动到最后。
9665



被折叠的 条评论
为什么被折叠?



