C语言
文章平均质量分 94
睿里睿气
全栈工程师
展开
-
C连载28-宏、编译宏、select、epoll函数
define是C语言中的一个宏定义,用来建一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本例如:#define PI 3.1415926 #define A(x) x。原创 2022-11-22 23:56:18 · 175 阅读 · 0 评论 -
如何做一个自动化感应垃圾桶
简介上面的视频就是制作成型的感应式垃圾桶,手靠近感应器的时候,就可以自动开盖大概一秒,自动再盖上,它的用处可大了,比如:用来喝水,用来泡面或者用来当笔筒,总之垃圾桶能干的事情,它一样都干不了??????来合个影缘起哈哈哈,看到抖音使用树莓派、单片机等等小玩意,制作好玩的东西,于是决定在家也玩一玩破板子,破感应器,破垃圾桶,破蜂鸣器制作一个感应垃圾桶。必须要在无聊的生活中自己找寻乐趣!!!硬件简介超声波感应器前面两个圆柱形的东西就是一个超声波感应器,一个是发射口,一个是接收口,基本工原创 2020-12-12 16:53:00 · 4917 阅读 · 2 评论 -
C连载27-练习计算和数据类型
一、练习计算和数据类型#include<stdio.h>#pragma warning(disable:4996)const int S_PER_M = 60; //1分钟的秒数const int S_PER_H = 3600; //1小时的秒数const double M_PER_K = 0.62137; //1公里的英里数int D27_1_running(void) { double distk, distm; //跑过的距离(分别用以公里和英里为单位)原创 2020-10-10 00:24:44 · 149 阅读 · 0 评论 -
C连载26-强转、原型、待转与目标不匹配
一、待转换的值和目标类型不匹配(1)目标类型是无符号类型,且待赋的值是整数时,额外的位将被忽略。例如:目标类型时8位unsigned char,待赋的值时原始值求模256(2)如果目标类型是一个有符号的整数,且待赋的值是整数,结果因实现而异(3)如果目标类型是一个整数,且待赋的值是浮点数,该行为是未定义的。浮点值被转换为整数类型会进行截断,例如:26.325截断为26#include<stdio.h>int D26_1_conver(void) { char ch; int原创 2020-09-30 00:20:58 · 238 阅读 · 0 评论 -
C连载25-求模、类型转换、递增递减、表达式
一、求模运算特殊点如果包含负数计算机会如何计算被除数为负数,那么余数就是负数;被除数为正数那么余数就是正数举例:11%5=1 ; 11%(-5)=1 ; -11%5=-1 ; -11%(-5)=-1无论何种情况都可以转化为a%b = a-(a/b)*b二、递增、递减运算符和Java一样,没什么可说的。优先级:只有圆括号优先级比它高;(x+y)++这是无效的表达,自增自减运算符只能对一个变量起到作用。原则:(1)如果一个变量出现了一个函数的多个参数中,不要对该变量使用递增递减运算原创 2020-09-26 00:16:21 · 160 阅读 · 0 评论 -
C连载24-复习转换说明以及sizeof运算符
一、复习题1.打印处下列各项内容需要什么样的转换说明一个字段宽度与位数相同的十进制整数 %d字段宽度为15的unsigned long类型的整数 %15lu一个形如0x8a、字段宽度为4的六进制数 %#4x#:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点。一个字段宽为8的字符串前8个字符 %8.8s一个参数列表中给定字段宽度的八进制整数 %*o读取下原创 2020-09-22 00:29:41 · 406 阅读 · 0 评论 -
C连载23-输入输出中星号的用法
一、scanf()的返回值scanf()函数会返回成功读取的项数如果没有读取任何项,而且需要读取的是一个数字,但是却读取了非数字,那么就会返回0当检测到“文件结尾”的时候,会返回EOF(EOF是头文件stdio.h中的特殊值,通常用#define指令把EOF定义为-1二、printf()和scanf()的*修饰符首先看一下printf的*的用法#include<stdio.h>#pragma warning(disable:4996)int D22_1_varwid(vo原创 2020-09-18 00:14:10 · 1411 阅读 · 0 评论 -
C连载22-scanf转换说明中的修饰符
一、scanf()转换说明中的修饰符转换说明含义*抑制赋值,示例:“%*d"数字最大字段宽度,输入达到最大字段宽度处,或者第一次遇到空白字符为止,示例:"%10s"hh把整数作为signed char 或者 unsigned char 类型读取ll把整数作为long long或者unsigned long long类型读取(C99),示例:"%lld"、"%llu"h、l或者L“%hd"和”%hi”表明把对应的值存储为short int类型;“%ho”原创 2020-09-14 00:24:58 · 958 阅读 · 0 评论 -
C连载21-printf带返回值,打印长字符串以及scanf
一、printf()返回值printf()函数是有返回值的,通常返回的是打印字符的个数,如果有输出错误,printf()返回一个负值(不同版本会有不同的值)#include<stdio.h>int D21_1_prntval(void) { int bph2o = 212; int rv; rv = printf("%d F is water's boiling point.\n", bph2o); printf("The printf() function printed %原创 2020-09-01 00:15:37 · 197 阅读 · 0 评论 -
C连载20-转换说明中的异常
一、对字符串使用格式化输出#include<stdio.h>#define BLURB "Authentic imitation!"int D20_1_stringf(void) { printf("[%2s]\n", BLURB); printf("[%24s]\n", BLURB); printf("[%24.5s]\n", BLURB); printf("[%-24.5s]\n", BLURB); return 0;}释义:小数点接数字,代表会输出几个字符,小原创 2020-08-26 00:07:09 · 142 阅读 · 0 评论 -
C连载19-Printf中的标记举例
一、printf()中的标记1.标记简介标记含义-待打印项左对齐,即从字段的左侧开始打印该项,示例:"-20s"+有符号值若为正,则在值前面显示加号;若为负,则在值前面显示减号,示例:"+6.2f"空格有符号值为正,则在值前面显示前导空格(不显示任何符号);若为负,则在值前面显示减号+标记覆盖一个空格,示例" 6.2f"#把结果转换为另一种形式,如果是%o格式,那么以0开始;如果是%x或者%X格式,则以0x或者0X开始;对于所有的浮点格式,#保证了即使后面没原创 2020-08-14 00:18:02 · 610 阅读 · 0 评论 -
C连载18-转换说明,转换说明修饰符、sizeof返回类型可移植
一、printf()函数常用的转换说明转换说明输出%a浮点数,十六进制数和p计数法%A浮点数,十六进制数和p计数法%c单个字符%d有符号的十进制数%e浮点数,e计数法%E浮点数,e计数法%f浮点数,十进制计数法%g根据值的不同,自动选择%f或者%e,%e格式用于指数小于-4或者大于或等于精度时%G根据值的不同,自动选择%f或者%E,%E格式用于指数小于-4或者大于或等于精度时%i有符号的十进制整数%o原创 2020-07-30 00:12:22 · 259 阅读 · 0 评论 -
C连载17-明示变量以及两种头文件举例
一、常量和C预处理器1.符号常量(symbolic constant)编译程序的时候程序中的符号常量都会被实际字面量所替换,这一过程称为编译时替换格式:末尾不加分号,中间不加等号,字面量可以是数字,字符,字符串等#define CHANGLIANGNAME 8902.const限定符C90标准增加了const关键字,用于限定一个变量为只读const int MONTHS = 12;//MONTHS在程序中不可以更改,值为12const用起来比#define更加灵活;const原创 2020-07-25 00:14:36 · 558 阅读 · 1 评论 -
C连载16-char类型数组和null字符,以及常用两种方法对比
一、char类型数组和null字符字符串都是被存储在char类型数组里面,字符被存储在相邻的存储单元中,每个单元存储一个字符。每个字符串末尾会有一个\0,这就是空字符串,C语言用它来标记字符串结束,空字符串不是数字0,他是非打印字符,其ASCII码是0。数组定义:同类型的数据元素的有序序列。1.使用字符串#include<stdio.h>#define PARISE "You are an extraordinary being"#pragma warning(disable:原创 2020-07-21 00:10:00 · 833 阅读 · 0 评论 -
C连载15-练习一波转换模式
一、复习一下前面所学的内容1.写出下列字符或者数字的类型以及在printf()函数中使用什么符号转换常量类型转换说明(%转换符号)12int%d0X3unsigned int%#x‘C’char(实际上是int)%c2.34E07double%e‘\040’char(实际上int)%c7.0double%f6Llong%ld6.0ffloat%f0x5.b6p12float%a012unsi原创 2020-07-16 00:23:22 · 133 阅读 · 0 评论 -
C连载14-精准数据类型、参数数量类型匹配、缓冲区的原理
一、使用数据类型的雷区不要赋值给不相关的变量例如:int a = 2.36这条语句,会直接给a赋值2,而不会进行四舍五入,原理是直接截断小数点后面的数字。例如:float b = 3.1415926536,C中保证了float类型的前6位精度,会损失精度,应该使用double来进行赋值。许多公司内部会在变量名中体现变量类型,例如:int类型的一般用i_当前缀,unsigned short会使用us_当前缀。二、参数与陷阱C语言会通过函数原型机制检查函数调用时参数的个数和类型是否正确,但是p原创 2020-07-12 00:19:29 · 181 阅读 · 0 评论 -
C连载13-复数类型以及基本数据类型总结
一、复数和虚数类型1.C语言有三种复数类型:float _Comples,double _Complex,long double _Complexfloat_complex类型的应包含两个float类型的值,分别表示实部和虚部。类似的C语言的三种虚数类型为1float _Imaginary,double _Imaginary,long double _Complex如果包含complex.h头文件,便可以使用complex来代替_Complex,用imaginary来代替_Imaginary,用I原创 2020-07-08 00:12:42 · 4814 阅读 · 0 评论 -
C连载12-float类型上、下溢以及打印格式说明
一、打印float类型%f来表示float和double类型的数字%e来打印指数记数法的浮点数如果系统支持十六进制的浮点数,可以使用a和A分别来代替e和E打印long double类型要使用%Lf或%Le或%La来替代#include<stdio.h>int D12_1_showf_pt(void) { float aboat = 32000.0; double abet = 2.14e9; long double dip = 5.32e-5; printf("%f c原创 2020-07-04 00:29:25 · 2008 阅读 · 0 评论 -
C连载11-可移植类型、double、float
一、可移植类型举例1.系统不支持“精确宽度整数类型”怎么办?最小宽度类型:一些类型名保证所表示的类型一定是至少有指定宽度的最小整数类型。使用上述定义的类型,例如:int_least8_t是可以容纳8位有符号整数值类型中的宽度最小的类型的一个别名,如果某系统的最小整数类型是16位,可能不会定义int8_t类型。尽管如此,该系统可能然会使用int_least8_t类型,但是可能把该类型实现为16位整数类型。2.打印类型的转换有使用%d也有%ld的,该怎么办?C语言提供了一些字符串宏来显示可移原创 2020-06-30 00:22:08 · 458 阅读 · 0 评论 -
C连载10-char类型打印、两种例外可移植类型
一、打印char字符#include<stdio.h>#pragma warning(disable:4996)int D10_1_PrintCharacter(void) { char ch; printf("Please enter a character:\n"); //ch = 45; scanf("%c", &ch); printf("The code for %c is %d\n", ch, ch); return 0;}打印的时候原创 2020-06-26 00:33:06 · 1500 阅读 · 0 评论 -
C连载9-char类型详解
一、char类型1.char类型存储的是整数而不是字符,例如:在ASCII中,65代表A;2.标准ASCII范围为0-127;商用统一编码Unicode创建一个全球字符合集;3.注意点:C语言把1字节定义为char类型占用的位数,因此在16位,32位,64位系统中都是可以用char类型的。有敌意i但值得注意就是在Java中,char类型是占两个字节的,而byte类型才会占用一个类型;4.声明方式:声明一个字符,我们需要使用单引号将其引用起来。不能使用双引号我们可以这样char a = 65;但是原创 2020-06-21 23:57:20 · 1690 阅读 · 0 评论 -
C连载8-Printf中格数输出的不同样式以及原理分析
一、不同输出格式会有不同的结果1.%ld 用于long类型的值,如果系统中int和long大小相同,使用%d就可以,这样的程序被移植到其他系统(int和long类型的大小不同)。2.同样x和o前面也可以使用l来修饰。3.对于short类型,前面就是使用h来当前缀。4.h和l前缀都可以和u一起连用,用于表示无符号的类型。例如:%lu/*print2.c --更多printf()的特性*/#include<stdio.h>int main(void) { unsigned i原创 2020-06-18 00:30:07 · 156 阅读 · 0 评论 -
C连载7-整形机器注意点
一、进制1.显示八进制和十六进制(1)%d 用于显示十进制数;(2)%o 用于显示八进制数;(3)%x 用于显示十六进制数。(4)%u 用于显示unsigned类型整数。另外如果要是显示各进制的前缀0、0x和0X,就必须使用%#o、%#x和%#X/* base.c --以十进制、八进制、十六进制打印十进制数字100*/#include<stdio.h>int main(void){ int x = 100; printf("dec = %原创 2020-06-14 01:12:12 · 102 阅读 · 0 评论 -
C连载6-声明与赋值、杂论
一、杂论1.计算机的存储方式可以分为两大基本类型:整数类型和浮点类型。2.C语言中的数据类型关键字:int\long\short\unsigned\char\float\double\signed\void__Bool__Complex__Imaginary3.1字节(byte) = 8字节(bit)4.字(word)是设计计算机时给定的自然存储单位,对于8位的微型计算机(如,最初的苹果机)1个字长只有8位,从那以后,个人计算机字长增长至16位、32位、直到目前的64位,计算机的字长越大,其数据原创 2020-06-10 00:18:18 · 155 阅读 · 0 评论 -
C连载5-函数与return拾贝
一、return语句1.main函数有return语句,但是也可以没有,对于main函数,运行完最后一行语句,就会自动自动返回一个0,但是其他函数是不可以的,为了养成好习惯,请在main函数末尾添加return 0;2.return语句是一种跳转语句。3.举例#include <stdio.h>void builder(void);int main(void){ printf("I will summon the buttler function.\n"); butt原创 2020-06-04 00:24:17 · 115 阅读 · 0 评论 -
C连载4-注释、头文件函数等
一、注释(类似于Java)1./注释内容/2.//注释内容(这种只允许单行注释)二、头文件1.#include<>是C预处理指令(preprocessor directive),C编译器会在编译前会对源码做一些准备工作,即预处理(preprocessing).2.头文件:在C程序的顶部信息集合被称为“头文件“。3.stdio.h:标准输入/输出头文件。4.为什么不把常用的函数内置到语言中去?答:并非所有的程序都会运用到I/O包,轻装上阵表现了C语言的哲学,正因为如此,使得C语言成原创 2020-05-30 00:17:31 · 229 阅读 · 0 评论 -
C连载3-不同环境下的C
一、不同环境下的C1.一个源程序inform.c编译生成a.out,然后可以直接运行这个可执行程序,如果要存储这个可执行文件,应该把它重命名,否则,就会被下一次编译程序时生成的新a.out所替换。2.如何处理目标代码,C编译器会创建一个inform.o,然而却找不到这个文件,因为一旦链接器生成了完整的可执行程序,就会将其删除,如果原始程序有多个源代码文件,则会保留目标代码文件。3.GNU项目是要给开发大量免费UNIX软件的集合(GNU‘s Not Unix)。(也称为GCC,其中包好了GCC C编译器原创 2020-05-26 00:21:56 · 133 阅读 · 0 评论 -
C连载2-编译过程以及语言历史概览
一、计算机要完成两数相加,可以大致分为如下几个步骤:1.从内存位置2000上把一个数字拷贝到寄存器1;2.从内存位置2004上把另一个数字拷贝到寄存器2;3.把寄存器2里面的内容与寄存器1中的内容相加,把结果储存在寄存器1中。4.把寄存器1中的内容拷贝到内存位置2008。二、高级语言以更抽象的方式描述行为,不受限于特定CPU或者指令集。三、编译器都声称提供完整的K&R实现,与大多数语言相比,C语言比其他语言更加依赖库,因此需要一个标准库,实际上由于缺乏官方的标准,UNIX实现提供的库已成原创 2020-05-22 00:21:57 · 119 阅读 · 0 评论 -
C连载1-初衷&简单介绍
一、初衷本来要肝算法的还是私下搞吧,但是在某通信公司不会C,干活都没法干所以肝肝肝肝肝肝肝,不会很详细,但是只要写出来就是我不会的,或者需要总结的,如下牛*的参考书,比大学课本谭浩强好多了。二、高效性C语言居右通常是汇编语言才有的微调控功能,汇编语言是为特殊中央处理单元设计的一系列内部指令,使用助记符:不同的CPU系列使用不同的汇编语言,可以根据具体情况微调程序以获取最大运行速度或最有效地使用内存。三、可移植性四、一句牛*的话:面向对象编程一门哲学,它通过对语言建模来适应问题,而原创 2020-05-18 00:26:06 · 135 阅读 · 0 评论