关于C语言算术表达式中“寻常算术转换”的问题(转) 在c语言算术表达式的编译过程中,有一个“寻常算术转换”的问题,大多数情况下,教材中并没有做具体的有意义的说明,在实际应用中,如果不注意这个问题,可能会产生严重的后果!一下以实例做一个说明,希望引起大家的注意。1、C语言算术表达式“寻常算术转换”由于&... 2023-06-13 C语言文章基础课C语言基础
[C/C++] 【高效c语言】(二)--经典 C语言 首先,我们先来看下面这个经典的代码:intmain (){inta=42;printf(“%d\n”, a);}从这段代码里你看到了什么问题?我们都知道,这段程序里少了一个#i nclude 还少了一个return 0;的返回语句。不过,让我们来深入的学习一下,这段代码在C++下无法编译,因为C++需要明确声明函... 2023-06-13 C语言文章基础课C语言基础
【高效C语言】(一)--提高C语言代码效率的方法 代码效率包括两个方面内容:代码的大小和代码执行速度。如果代码精简和执行速度快,我们就说这个代码效率高。一般情况下,代码精简了速度也相应提上来了。单片机的ROM和RAM的空间都很有限,当您编程时遇到单片机的ROM和RAM的不够用的时候,或者您的程序要求较高的执行速度时,我们就... 2023-06-13 C语言文章基础课C语言基础
【高效c语言】(四)--switch与if的效率 switch与if的区别如果纯粹比较数字或字符,建议使用switch,因为它只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这儿。例如:if(a == 1) //...else if(a == 2) //...else if(a == ... 2023-06-13 C语言文章基础课C语言基础
【高效c语言】(七)--小容量单片机系统的C语言程序结构 1系统的改进可以说,这个用ASM51实现的代码是没有什么组织性可言的,要什么功能就加入什么功能,弄得程序的结构非常松散,其实这也是导致笔者最终决定重新改写这些代码的原因。大家知道,87LPC764有4KB的Flash ROM,而笔者的程序量只有2KB多点,因而第一个想法是改用C语言作为主要的开... 2023-06-13 C语言文章基础课C语言基础
【高效c语言】(八)--基于ARM的高效C语言编程 ARM处理器提高执行速度和减小代码尺寸是嵌入式软件设计的关键需求,以其高性能、低功耗、低成本等优势被广泛应用于各种成功的32位嵌入式系统中。尽管大多数的ARM编译器和调试器都带有性能优化工具,但是为了保证其正确性,编译器必须是稳妥和安全的,而且它还受到处理器自身结构... 2023-06-13 C语言文章基础课C语言基础
【高效c语言】(十)--ARM设计思想与高效C编程 ARM内核采用RISC体系结构。RISC是一种设计思想,其目标是设计出一套能在高时钟频率下单周期执行,简单而有效的指令集。RISC的设计重点在于由硬件执行的指令的复杂度,这是因为软件比硬件容易提供更大的灵活性和更高的智能。因此,RISC设计对编译器有更高的要求;相反,传统的复杂指... 2023-06-13 C语言文章基础课C语言基础
【高效c语言】(十一)--查找嵌入式软件技术的缺陷 本文将介绍如何避免那些隐蔽然而常见的错误,并介绍的几个技巧帮助工程师发现软件中隐藏的错误。大部分软件开发项目依靠结合代码检查、结构测试和功能测试来识别软件缺陷。尽管这些传统技术非常重要,而且能发现大多数软件问题,但它们无法检查出当今复杂系统中的许多共性错误... 2023-06-13 C语言文章基础课C语言基础
单片机C语言基础编程源码六则 1.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开始逐渐增大,到某一最大值后逐渐减小,直到0,然后再从0逐渐增大,一直这样输出。试编写一函数,使从P2口输出的值产生三角波,并且使三... 2023-06-13 单片机C语言编程基础文章基础课C语言基础
单片机C语言延时分析 标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。在keil C51中,直接调用库函数:#include// 声明了void _nop_(void);_nop_(); // 产生一条NOP指令作用:对于延时很短的,要求在us级的,采用&l... 2023-06-13 单片机C语言延时分析文章基础课C语言基础
C语言高效编程的几招 编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。第1招:以空间换时间计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间... 2023-06-13 C语言高效编程文章基础课C语言基础
谈谈单片机C语言编程中不经意间的一个小错误! 我们知道,51单片机有几个不同的中断源。对于一个系统的设计,通常在初始化程序里面需要定义各个中断等比如:TMOD = 0x21; // T1 mode 2 T0,mode 1 //GATE C/T M1 M0 GATE C/T M1 M0TL1 = 0xfd; // 0xfa=4800 bps 0xfd=9600 bpsTH1 = 0xfd;TH0 = -(10000/256);TL... 2023-06-13 C语言小错误文章基础课C语言基础
,C语言程序连接过程中的特性和常见错误 教您布局C语言编程程序的内存重点关注以下内容: C语言程序在内存中各个段的组成 C语言程序连接过程中的特性和常见错误 C语言程序的运行方式 一:C语言程序的存储区域 由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程... 2023-06-13 C语言文章基础课C语言基础
C语言之内存使用 这里我和大家一起探讨c语言的内存使用。曾经有同行写了一个把整数转换为字符串的函数:char *itoa (int n){char retbuf[20];sprintf(retbuf, "%d", n);return retbuf;}倘若我调用该函数:char *str5 = itoa(5),str5会是什么数值?结果是不确定,唯一能确定的是结果不会是我们想... 2023-06-13 C语言文章基础课C语言基础
对学习嵌入式系统的途径与基本方法的建议 (1)嵌入式系统软件硬件密切相关,一定要打好软件硬件基础。其实,只要找到正确的方法,加上努力,任何理工科学生,甚至非理工科学生,都能学好嵌入式系统。(2)选择一个芯片及硬件评估板(入门芯片最好是简单一点,例如8位MCU)、选择一本好书(最好有规范的例子)、找一位好老师(最好是有经验且热心... 2023-06-13 嵌入式系统汇编C语言MCU文章软件开发开发环境
使用单片机C语言的好处 将C向MCU(俗称单片机)8051上的移植始于80年代的中后期。客观上讲,C向8051 MCU移植的难点不少。如:·8051的非冯·诺依慢结构(程序与数据存储器空间分立),再加上片上又多了位寻址存储空间;·片上的数据和程序存储器空间过小和同时存在着向片外扩展它们的可能;&mi... 2023-06-13 单片机C语言文章基础课C语言基础
C++的几个编程技巧 C++语言是一个面向对象的语言,使用C++编写的代码更加简捷、高效,更具可维护性和可重用性。但是很多人使用了C++语言后却感到C++与C编程没有什么区别。这其实是由于对C++语言的特点和特色理解和使用不够造成的。事实上,没有任何一个程序员使用C语言的编程效率可以超过C++语言的。一、使用... 2023-06-13 C语言C++编程语言文章基础课C语言基础
C语言程序连接过程中的特性和常见错误 一:C语言程序的存储区域由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。C语言编写的程序经... 2023-06-13 C语言程序连接特性常见错误文章基础课C语言基础
C语言程序的编译和链接过程 1.程序的编译 一般而言,大多数编译系统都提供编译驱动程序(complier driver),根据用户需求调用语言预处理器,编译器,汇编器和链接器.例如有如下历程://main.cvoid swap();int buf[2]={1, 2};int main(){ swap(); return 0;} //swap.cint *bufp0 = &buf[0]int *bufp1;void... 2023-06-13 C语言编译链接过程文章基础课C语言基础
C语言编译全过程 编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(... 2023-06-13 C语言编译C文章基础课C语言基础
学习学好c++的50条忠告 1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑&mdash... 2023-06-13 编程知识点忠告C语言文章基础课C语言基础
机器语言到----汇编语言 指令通常由几个字节组成,第一个字节是操作码,它规定了计算机要执行的基本操作;后面的字节是操作数,它规定了操作对象或操作对象的地址。机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如... 2023-06-13 汇编语言C语言指令文章基础课
关于指针-2 经常听到很多人说这么一句话,指针就是地址!这句话非常正确。所谓地址又是什么呢?地址其实就是计算机的内存的索引。具体到MCU,其实就是单片机的内存地址,包括数据区地址和程序区地址。在任何一款单片机的手册中都会介绍该产品的地址分布。如果使用汇编语言编程,对地址分布就非... 2023-06-13 C语言单片机指针地址文章基础课C语言基础
关于指针-1 很多人说C的指针很难,我有位姓张的同学告诉我“不难”。因为在他工作的第一年里,从来没有使用过指针,使用数组即解决了问题。当然现在他在单位早就成了顶级的工程师了。我说这件事情的意思是凡事不要拔苗助长,一步一步即可解决问题。如果您的代码量已经超过了5万行... 2023-06-13 C语言指针文章基础课C语言基础
关于指针-3 下面我们了解一下赋值语句 x=y的含义。通过这个语句,我们了解一下地址的含义。x=y;其实就是将变量y的值赋给x。但是单片机在运行中过程十什么。这个可以通过实验获得。在keil中输入以下代码。#includeint main(void){volatile unsigned char x,y;x=10;y=11;x=y;}编译以后... 2023-06-13 C语言单片机指针文章基础课C语言基础