当前位置: 首页 > news >正文

嵌入式c学习四

c语言的输入输出:ANSI组织发布的标准c库,使用函数需要包含对应头文件,使用输入输出函数时需要包含stdio.h (stdio -> standard input output)标准输入输出

格式化输出:int printf(const char * restrict format, ...),printf函数返回值是被输出的字符的数量,不包含'\0',遇到\n输出结束,当发生错误时返回一个负整数,c语言中字符串用双引号( “  ” )表示

%转换说明符

转换说明:

d:以有符号的10进制输出、f:浮点型输出

o,u,x/X:把无符号整型转换为8,10,16进制输出

c:以字符型输出

s:以字符串型输出

p:把存储单元的地址以16进制输出

%:可以输出% 

标志说明

#:可以吧对应进制的前导符进行输出,#o输出八进制前导符0,#x输出16进制前导符0x

~:可以用于数据对齐,-表示左对齐,默认为右对齐

转换精度:.3指定输出位数,表示输出3位小数

长度修饰符

hh:指把整型转换为字符型输出,只针对输出内容,数据本身无影响

h(half-一半):把整型转换为短整型

大端存储与小端存储:小端-数据低字节存储在内存的低地址;大端-数据高字节存储在内存的低地址

缓冲区:全缓冲、无缓冲、行缓冲

全缓冲:缓冲区被填满,立即把数据冲刷到文件,或者在关闭文件,读取文件及修改缓冲区类型也会立即把数据冲刷到文件

无缓冲:指没有缓冲区,直接输出

行缓冲:当换冲区被填满(一般是4kB及4096字节)或者缓冲区遇到 ‘\n’,或者读取文件内容,修改缓冲区类型,会立即把数据冲刷到文件中,printf函数采用行缓冲

fflush()函数:用户可以调用库函数刷新输出缓冲区(主义不能刷新输入缓冲区,一般编译器不支持)——fflush(stdout); 可以刷新输出缓冲区

格式化输入:scanf(scan format)翻译为格式化扫描

scanf函数的第一个参数是字符串可以包含转换说明符%

scanf("%[0-9]s",str);  只接收0-9之间字符,输入其他数据则停止输入

scanf("%[^0-9]s",str);  不接收0-9之间字符,输入0-9字符停止输入

scanf("%[^#]s",str);  输入#表示停止输入数据

c语言的运算符:+、-、*、/、%、++、--;++,--属于单目运算符,其他5种属于双目运算符

/:除法运算符,当两端操作数都是整数时,输出也为整数且会直接舍弃小数保留整数(不会4舍5入):5/3=1,若有一个数为浮点数则输出为浮点数,默认6位数精度(小数点后保留6为小鼠),

%:取余运算符,两个操作数必须为整型,5%3=2

c语言中单目运算符和三目运算符,赋值运算符都是遵循右结合性,其它运算符遵循左结合性

++:a++,a先参与表达式运算,运算结束后a自增1;++a,a先自增1,在参与表达式运算

sizeof():此函数在c语言中是一个操作符,用于计算数据类型大小,结果以字节为单位,其括号里的表达式不会参与计算,当sizeof表达式中设计多个数据类型大小时,会进行隐世转换数据类型

自动类型转换:编译器默认转换,可能会影响数据精度,转换按照数据长度增加的方向进行,所有的浮点型都是以双精度运算的,运算中只有float类型时也需要先转换为double类型在运算,char与short参与运算时必须先转换成int类型

强制类型转换:(需要转换的数据类型) 变量——(int)a; 将变量a转换为整型

位操作运算符:~ & ^ | << >>  (对二进制而言)

~:按位取反,对于二进制而言,0-1;1-0

&:按位与,有0为0,两个bit同时为1才为1

|:按位或,两个bit中有1,结果为1

^:按位异或,两个bit,相同为0,不同为1

<<:左移运算符,高位舍弃,低位补零——1111 0000 <<3——1110 0000

>>:右移运算符

a=0x0000 ?000

设置(置1)a的bit 3 = 1<<3 -> 0x 0000 1000 ->aI1 ->0000 1000——a | =(1<<x)->设置a的bit x;

清除(请0)a的bit 3 = 1<<3 -> 0x 0000 1000 ->~(1<<3) -> 0x1111 0111 --> a & ~(1<<3) --> 0x0000 0000,——>a &= ~(1<<x)

关系运算符:>      <       >=        <=        ==        !=

>      <       >=        <=  这四种关系运算符优先级相同且高于 ==        !=,此两者优先级相同

逻辑运算符:&&   ||       !

&&:逻辑与,当两个表达式为真,结果为真(当第一个表达式为假时结果为假,且后续表达式不在参与运算)

||:逻辑或,两个表达式有一个为真,结果为真,当第一个表达式为真后续表达式不在运算

!:逻辑非,单目运算符,真变为假,假变为真

条件运算符:?(唯一一个三目运算符)m ? x:y  m表达式为真返回x,为假返回y

逗号运算符:(优先级最低) x,y,n;  取最后一个表达式n的结果

优先级:单目运算符 > 算数运算符 > 移位运算符 > 关系运算符 > 相等

        

        

相关文章:

  • 通道注意力机制、空间注意力机制、混合注意力机制
  • 高效自动化测试:打造Python+Requests+Pytest+Allure+YAML的接口测试框架
  • 燃气对我们生活的重要性体现在哪里?
  • kali linux更新sqlmap
  • C#中多线程访问对象锁问题的总结及解决方案
  • HTML+JavaScript实现随机点名2.0|随机抽奖效果-demo
  • cursor 用 Claude 3.5 做简单的网页小游戏
  • 在 JDK 1.8 的 ConcurrentHashMap 中,为什么存在两种插入方式?
  • 解决vscode中出现“无法将pip项识别...“问题
  • 2025软件供应链安全案例︱证券行业云原生DevSecOps敏捷安全实践
  • 实施一套先进的智能摄像头服务系统。
  • HMT-UNet模型详解及代码复现
  • BERT、T5、GPTs,Llama
  • 2025年直播商城系统源码发展趋势:电商带货APP的技术革新
  • Java平衡二叉树
  • 具备多种功能的PDF文件处理工具
  • spring的data派生查询机制详解
  • LLM剪枝代码解释与实现
  • 计算机网络-应用层
  • 几种常见的虚拟环境工具(Virtualenv、Conda、System Interpreter、Pipenv、Poetry)的区别和特点总结
  • 今晚上海地铁多条线路加开定点加班车,2号线运营至次日2时
  • 新华社:让历史照鉴未来
  • 孙一凡的东欧狂想音乐会:一场穿越东欧的听觉绮梦
  • 2025财政观察①长三角罚没收入增速放缓,24城仍在上涨
  • “80后”商洛市委副书记、市政府党组副书记赵孝任商洛市副市长
  • 比黄油年糕热量还高,这个火爆全网的甜品劝你慎吃