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

数据类型(基本类型下半)day3

4.转义字符

\n 换行 \t 跳下一个tab位置 \b 退格,当前位置移到前一列 \r 回车 将当前位置移到本行开头

\f 换页 当前位置移到下页开头 \\ 反斜杠字符\ \ddd 1到3位八进制数 \xhh 1到2位十六进制所代表的字符

#if 0printf("abc\tij#k\n");printf("ab*c\t*de\rf\tg\n");	printf("\'A\'\n");printf("\"A\"\n");printf("'A'\n");printf("A\n");
#endifchar ch = 'B';printf("ch = %c:%d\n",ch,ch);ch = '\x42';printf("ch = %c:%d\n",ch,ch);ch = '\102';printf("ch = %c:%d\n",ch,ch);ch = 66;printf("ch = %c:%d\n",ch,ch);ch = 0102;printf("ch = %c:%d\n",ch,ch);ch = 0x42;printf("ch = %c:%d\n",ch,ch);

五:高内聚,低耦合

六:类型必转/隐式类型转换/强制类型转换符

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.二个方向:右到左,下到上

	short ch1 = 'A';short ch2 = 'B';printf("sizeof(ch1 + ch2 ) = %d\n",sizeof(ch1 + ch2));//转int四字节大小,右到左float a;float b;printf("sizeof(a + b) = %d\n",sizeof(a + b));//看情况转float或double,下到上

2.隐式类型转换

​ 从右向左 必转 char/short必转成int

float必转为double(C99标准之后,不再必转)

​ 从下向上 不同精度混合运算

​ 低精度往高精度转

​ eg:10+‘a’+1. 5-765. 1234 *‘b’ 是double类型(看图)

​ 注意:不要理解为int 型先转换成 unsigned int 型,再转成 long 型,再转成 double 型。如果 一个 int 型数据与一个 double 型数据运算,是直接将 int 型转成 double 型。

	signed int a = -10;unsigned int b = 5;printf("a = %d\n",a);printf("a = %u\n",a);//%u 转为无符号输出if(a + b > 0){printf("yes\n");//隐式转换}else{printf("no\n");}int a = 10;int b = -5;printf("result = %f\n",a*1.0/b);//或者int改成double 都是一样的

七:除法/求余

1.除法 两个整型数相除,结果还是整型

2.求余 求余的被除数 不能为零 求余结果的符号(取决于左操作数) eg:10%3=1 -10%3=-1

应用:num % n = [0~N-1]范围

八:random/srandom/time

long int random(void) void srandom(unsigned int seed)

​ 参数:void 返回值:long int 参数:seed 提供种子值 返回值:~

time_t time(time_t *tloc)

​ 功能:获得当前时间的秒数值 参数:tloc NULL 空指针 返回值:time_t //long int

#include<stdio.h>
#include<stdlib.h>
#include<time.h>int main(int argc, const char *argv[])
{int i = 0;srandom(time(NULL));for(i=0;i<10;i++){printf("%ld\n",random()%100);//printf("%ld\n",(random()%50)+50);}return 0;
}

九:强制类型转换符

	printf("a = %f\n",(float)a);//(你想要的类型)-----这样可以强制类型转换 //注意:只是一个强制类型转换符,不会对运算数本身产生影响eg:float f = 12.3456;printf("f = %.2f\n",(int)(f*100)/100);

十:自增(increment)/自减(decrement)

1.a++ //先用后加 ++a //先加后用

​ 前提是参与运算 运算数必须是一个左值

int a = 1;
float f = 12.345;
f = ++a;//可以这样用

十一:左右值问题

1.const int a = 10 //a被限定为只读变量

2.printf的一些逻辑问题

	printf("%d\n",10++);//lvalue required as increment operand //10++是右值 

3…左值----可定位的值 能做&(可取地址运算的) eg:变量

​ 右值----不可定位的值 不能做&(可取地址运算的) eg:常量(10),常量表达式(1+2),匿名变量(a+b)

十二:贪心原则

1.i+++++i C编译系统在处理时,尽可能多得(自左向右)将若干个字符组成一个运算符

((i ++) ++ ) + i ++是自右向左的逻辑,但是第二++向前结合时(它需要一个左值),i++是表达式(是个右值),所以会编译错误。

rand_time.c:27:23: error: lvalue required as increment operand//报错消息printf("g = %d\n",g+++++g);

十三:不同精度数据间混合赋值

1.高精度=>低精度-------精度丢失 低精度=>高精度------高位截断

短类型=>长类型-------判断短类型是 有符号—符号位扩展 eg:0xffff8234 符号位1扩展1 0扩展0

​ 无符号—默认统统补零 eg:0x8234

	signed short b = 0x8234;// 0Xffff8234//unsigned short b = 0x8234;// 0x8234int a = 0;a = b;printf("a = %#X\n",a);

十四:逗号运算符(优先级最低)

1.a=3*5,a*4 = 60 赋值运算符的优先级别高于逗号运算符,因此应先求解a=3* 5(也就是把"a=3* 5"作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4, 得60。

2.一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式

​ eg:(a = 3*5,a*4),a+5 先计算出a的值为3*5等于15,再进行a*4 的运算得60(但a值未变,仍为15),再进行 a+5 得 20, 即整个表达式的值为 20。

int b = 0;
b = (a++,1+2,a+1)//结果为12	//每个式子都要运算到,结果用不用到不用管
http://www.xdnf.cn/news/685117.html

相关文章:

  • 智警杯备赛--数据库管理与优化
  • [神经网络]使用olivettiface数据集进行训练并优化,观察对比loss结果
  • LINUX528 重定向
  • Git使用手册保姆级教程
  • 【Python办公】Excel简易透视办公小工具
  • EasyExcel使用导出模版后设置 CellStyle失效问题解决
  • python完成批量复制Excel文件并根据另一个Excel文件中的名称重命名
  • C++之string题目练习
  • jQuery和CSS3卡片列表布局特效
  • tauri2项目打开某个文件夹,类似于mac系统中的 open ./
  • mybatis的mapper对应的xml写法
  • 【技术测评】黑龙江亿林网络「启强 Plus」服务器实测:56 核 32G 配置下的性能表现与应用场景解析
  • BEVDepth- Acquisition of Reliable Depth for Multi-view 3D Object Detection
  • [蓝桥杯C++ 2024 国 B ] 立定跳远(二分)
  • [Hackers and Painters] 读书笔记 | 设计模式思想 | LISP
  • 设计模式-装饰模式
  • 机器学习中无监督学习方法的聚类:划分式聚类、层次聚类、密度聚类
  • Python爬虫第22节- 结合Selenium识别滑动验证码实战
  • Java设计模式之设计原则
  • 莫毅明和钟家庆数学命题证明使用的预期理由和或然推理的错误
  • 使用JAVA 语言中 JNA 和 PDU 的区别
  • 深兰科技陈海波率队考察南京,加速AI医诊大模型区域落地应用
  • Python爬虫(40)基于Selenium与ScrapyRT构建高并发动态网页爬虫架构:原理、实现与性能优化
  • vscode 配置 QtCreat Cmake项目
  • 文件上传绕过方法总结
  • Deep Evidential Regression
  • 【AUTOSAR】时间保护(Timing Protection)概念、应用与实现源代码解析(上篇)
  • 大模型三大缺陷与RAG破解之道
  • vue3基本类型和对象类型的响应式数据
  • Disruptor—核心源码实现分析(三)