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

C基础-操作符详解

操作符分类:

算数操作符:+ - * / %

//算数操作符
// int main()
// {
//     //   /除法 1.整数除法(除号两端都是整数)  2浮点数除法,除号的两端只要有一个小数就执行小数除法
//     // 除法中,除数为0
//     int a = 7 / 2;
//     printf("%d\n",a); //3
//     double b = 7 / 2;
//     printf("%lf\n",b); //3.000000
//     double c = 7 / 2.0;
//     printf("%lf\n",c); //3.500000
//     int d = 0;
//     int e = 5 / d; //除数不可为0,编译器会报错//     printf("%d\n",e);//     return 0;
// }int main()
{int a = 17 % 8; //% 得到数整数的余数//int b = 17.0 % 8.0; // %取模操作符的两个操作数必须都是整数才行printf("%d\n",a);return 0;
}

移位操作符:<< >>

//移位操作符
//  <<左移操作符
//  >>右移操作符
//注意:以为操作符的操作数只能是整数  移动的是二进制
int main()
{//int a = 15;//00000000000000000000000000001111 -原码   //00000000000000000000000000001111 -反码 //00000000000000000000000000001111 -补码//int c = -15; //10000000000000000000000000001111 -原码 //11111111111111111111111111110000 -反码(原码的符号位不变,其他位按位取反) 11111111111111111111111111110001 -补码(反码+1就是补码)//int b = a >> 1;//移动的就是a中的二进制信息 //0000000000000000000000000000111 -  7//右移:算术右移(右边丢弃,左边直接补原来的符号位)  逻辑右移(右边丢弃,左边直接补0)// C语言没有明确规定是算术右移还是逻辑右移//int c = a << 1;//00000000000000000000000000011110//整数的二进制表示形式 : 原码 反码 补码 //正整数的原码、反码、补码是相同的//负的整数原码、反码、补码是要计算的//首先不管是正整数还是负整数都可以写出二进制原码  1.根据正负直接写出的二进制序列就是原码//1个整型是4个字节 = 32bit位//整数在内存中存储的是补码//计算的时候也是使用补码计算的// printf("%d\n",b); //7// printf("%d\n",c); //30// int d = -15; //10000000000000000000000000001111// int e = d >> 1;//11111111111111111111111111110001  ->  11111111111111111111111111111000 -> 11111111111111111111111111110111   ->00000000000000000000000000001000// printf("%d\n",e);//!移位操作符不要移负数哦int a = 6;// 110int b = a << 1;//1100printf("%d\n",b); //12return 0;
}

位操作符:& | ^

//位操作符
//也是操作二进制位
// &
// int main()
// {
//     int a = 3; //00000000000000000000000000000011
//     int b = -5;//10000000000000000000000000000101  11111111111111111111111111111010 补码11111111111111111111111111111011
//     int c = a & b;
//     // & --  对应二进制位,有0则为0,两个同时为1才是1
//     //00000000000000000000000000000011
//     //11111111111111111111111111111011
//     //00000000000000000000000000000011  -补码//     printf("%d\n",c); //3//     return 0;
// }//|
// int main()
// {
//     int a = 3; //00000000000000000000000000000011
//     int b = -5;//10000000000000000000000000000101  11111111111111111111111111111010 补码11111111111111111111111111111011
//     int c = a | b;
//     // | --  对应二进制位,有1则为1,两个同时为0才是0
//     //00000000000000000000000000000011
//     //11111111111111111111111111111011
//     //11111111111111111111111111111011  -补码
//     //11111111111111111111111111111010
//     //10000000000000000000000000000101 -5
//     printf("%d\n",c); //-5//     return 0;
// }//^
int main()
{int a = 3; //00000000000000000000000000000011int b = -5;//10000000000000000000000000000101  11111111111111111111111111111010 补码11111111111111111111111111111011int c = a ^ b;// ^ --  对应二进制位,相同为0,相异为1//00000000000000000000000000000011//11111111111111111111111111111011//11111111111111111111111111111000  -补码//11111111111111111111111111110111//10000000000000000000000000001000printf("%d\n",c); //-8return 0;
}//不能创建临时变量,实现两个整数的交换
int main()
{int a = 3;int b = 5;printf("交换前: a=%d b=%d\n",a,b);// int tmp = a;// a = b;// b = tmp;// a = a + b;// b = a - b;// a = a - b;   超过整形最大存储则不行//a ^ a -> 0//a ^ 0 = a// 异或是支持交换律的//a ^ b ^ a = 5//a ^ a ^ b = 5a = a ^ b;b = a ^ b; // b = a ^ b ^ b = aa = a ^ b;// a = a ^ b ^ a = bprintf("交换后: a=%d b=%d\n",a,b);return 0;
}

编写代码实现:求一个整数存储在内存中的二进制中1的个数

//编写代码实现:求一个整数存储在内存中的二进制中1的个数
//方法1
// int main()
// {
//     //整数有32个bit位
//     //获得32个bit位的每一位,
//     //判断这一位是否为1
//     //是1就是记数器+1
//     int num = 10;
//     int count = 0;//     while (num)
//     {
//         if (num%2 == 1)
//         {
//             count++;
//         }
//         num = num/2;//     }
//     printf("二进制中1的个数 = %d\n",count);//     return 0;
// }//方法2
int main()
{int num = 10;int i = 0;int count = 0;for(i=0;i<32;i++){if (num & (1 << i)){count++;}}printf("二进制中1的个数 = %d\n",count);return 0;
}

赋值操作符: = +=  -=  *= /= ....

//赋值操作符int main()
{int weight = 120;//体重weight = 89;  //不满意就赋值double salary = 10000.0;salary = 20000.0;int a = 10;int x = 0;int y = 20;a = x = y+1;//连续复制return 0;
}

单目操作符: ! sizeof + -  ~ & *

//单目操作符
// int main()
// {
//     int flag = 5;
//     if(flag == 0)
//     {
//         printf("hehe\n");
//     }
//     if(!flag) //flag为假打印hehe
//     {
//         printf("hehe\n");
//     }
//     if(flag)
//     {
//         printf("haha\n");
//     }//     return 0;
// }//单目操作符只有一个操作数
// int main()
// {
//     int a = 5;
//     int b = -a;
//     printf("%d\n",b);//     return 0;
// }//& * 应用于指针
// int main()
// {
//     int a = 10;
//     //pa是指针变量
//     int* pa = &a; // &-取地址操作符  取出a的地址
//     *pa = 20;  //解引用操作符(间接访问操作符)-单目操作符-通过pa中存放的地址,找到指向的空间(内容)
//     int c = *pa;
//     printf("%d\n",c);//     return 0;
// }//sizeof 不是函数,是操作符号
//sizeof 计算的是类型创建变量的大小,单位是字节
// int main()
// {
//     int a = 10;
//     double b = 10.0;
//     printf("%d\n",sizeof(int));//4
//     printf("%d\n",sizeof(a));//4
//     printf("%d\n",sizeof(b));//8
//     return 0;// }// int main()
// {
//     int arr1[10];
//     printf("%d\n",sizeof(arr1)); //40  计算整个数组的大小,单位字节
//     printf("%d\n",sizeof(int [10])); //40
//     int arr2[20];
//     printf("%d\n",sizeof(arr2));//80//     return 0;
// }// ~ 按位取反   按补码二进制位取反
// int main()
// {
//     int a = 0;
//     printf("%d\n", ~a);
//     //00000000000000000000000000000000
//     //11111111111111111111111111111111  -补码
//     //11111111111111111111111111111110
//     //10000000000000000000000000000001   -1
//     return 0;
// }// int main()
// {
//     int a = 13;
//     //00000000000000000000000000001101
//     //00000000000000000000000000010000
//     a |= (1<<4);
//     //00000000000000000000000000011101
//     //11111111111111111111111111101111
//     //00000000000000000000000000001101
//     printf("%d\n",a); //29//     a &= (~(1 << 4));
//     printf("%d\n",a);
//     return 0;
// }// int main()
// {
//     int a = 0;
//     //scanf  读取失败返回的是EOF
//     //假设scanf读取失败了,返回了EOF ---> -1
//     //while (scanf("%d",&a) != EOF)
//     while(~scanf("%d",&a))  //~ -1为false
//     {
//         printf("%d\n",a);
//     }//     return 0;
// }// --前置、后置--
//++前置 、后置++
// int main()
// {
//     int a = 1;
//     int b = a++;  //后置++,先使用,后++
//     //int c = ++a; //先置++ ,先++在使用
//     printf("b=%d a=%d\n",b,a);//     int c = 1;
//     int e = c--; //后置--,先使用,后--
//     printf("e=%d c=%d\n",e,c);//     return 0;
// }//强制类型转换
int main()
{int a = (int)3.14;  //强制转换printf("%d\n",a);// int a = int(3.14) //errreturn 0;
}void test1(int arr[])   //int*    4/8个字节
{printf("%d\n",sizeof(arr));
}
void test2(char  ch[])   //char*    4/8个字节
{printf("%d\n",sizeof(ch));
}
int main()
{int arr[10] = {0};char ch[10] = {0};printf("%d\n",sizeof(arr)); //40printf("%d\n",sizeof(ch)); // 10test1(arr); // x86上是4 ,x64上是8test2(ch);  // x86上是4 ,x64上是8return 0;
}

关系操作符: > < >= <= =.  !=.    关系操作符只能应用到适合的类型上

int main()
{int a = 0;int b = 0;scanf("%d %d",&a ,&b);if(a == 5 && b ==5){printf("hehe\n");}if(a == 5 || b ==5){printf("haha\n");}return 0;
}int main()
{int y = 0;scanf("%d",&y);//判断是否是闰年   1.能被4整除,并且不能被100整除//2 .能被400整除是闰年if(((y%4==0) && (y%100!=0)) || (y%400==0)){printf("y=%d是闰年\n",y);}else{printf("不是闰年");}return 0;
}

逻辑操作符:&& 逻辑与 并且   || 逻辑或 或者

int main()
{int i = 0, a = 0, b = 2, c = 3, d =4;//i = a++ && ++b && d++;//printf("a = %d\n b = %d\n c = %d\n d = %d\n",a,b,c,d);//1 2 3 4i = a++ || ++b ||d++;printf("a = %d\n b = %d\n c = %d\n d = %d\n",a,b,c,d);//1 3 3 4return 0;
}

条件操作符:? :

//条件操作符也叫三目操作符   有三个操作数    exp1 ? exp2 : exp3
//双目操作符   a+b 
//单目操作符 !a// int main()
// {
//     int a = 0;
//     int b = 0;
//     // if (a > 5)
//     // {
//     //     b = 3;
//     // } else
//     // {
//     //     b = -3;
//     // }//     //(a > 5) ? (b = 3) : (b = -3);//     b = (a > 5) ? 3 : -3;
//     printf("%d\n",b);//     return 0;
// }int main()
{int a = 0;int b = 0;scanf("%d %d",&a,&b);int m = (a > b) ? a : b;printf("%d\n",m);return 0;
}

逗号表达式 :    ,

//exp1,exp2,exp3,....expN
//逗号表达式 : 从左向右计算,整个表达式的结果是最后一个表达式的结果
// int main()
// {
//     int a = 1;
//     int b = 2;
//     int c = (a>b, a = b+10 ,a,b=a+1); //13
//     printf("%d\n",a); //12
//     printf("%d\n",b); //13
//     printf("%d\n",c); //13
//     return 0;
// }// int main()
// {
//     // a = get_val();
//     // count_val(a);//     // while (a > 0)
//     // {
//     //     //业务处理
//     //     a = get_val();
//     //     count_val(a);
//     // }//     //使用逗号表达式
//     while (a = get_val(),count_val(a), a>0)
//     {
//         //业务处理
//     }//     return 0;
// }

下标引用,函数调用和结构成员:  []. ().  .  ->  

[] 下标引用操作符

操作数:一个数组名+一个索引值

//[] 下标引用操作符
// int main()
// {
//     int arr[10] = {1,2,3,4};
//     //数组的起始是有下标的,下标是从0开始的
//     printf("%d\n",arr[2]); //arr 和 2是[]的两个操作数//     return 0;
// }

()函数调用操作符

接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数

//     return 0;
// }int Add(int x,int y)
{return x + y;
}
//函数调用操作符
int main()
{int len = strlen("abc"); //()函数调用操作符//()的操作数是:strlen 函数名   "abc" 实参printf("%d\n",len);int c = Add(3,5);printf("%d\n",c);//对于函数调用操作符来说,最少有1个操作数return 0;
}

访问一个结构的成员

. 结构体,成员名

-> 结构体指针 -> 成员名

结构体 -复杂类型  -自定义类型

//可变参数列表 -参数的个数是变化的 -探索
struct Book
{char name[30];char author[20];float price;
};void Print(struct Book * p)
{//printf("%s %s %f\n",(*p).name,(*p).author,(*p).price);printf("%s %s %f\n",p->name,p->author,p->price);// ->   //结构指针->成员名   p->name
}int main()
{struct Book b1 = {"C语言","ccc",66.8f};//书struct Book b2 = {"Java入门","jjj",55.8f}; //书Print(&b1);//printf("%s %s %f\n",b1.name,b1.author,b1.price);//printf("%s %s %.1f\n",b2.name,b2.author,b2.price);//结构体变量,成员名return 0;}

表达式求值

表达式求值的顺序一部分是由操作符的优先级和结核性决定。

同样,有些表达式的操作数在求值的过程中困难需要转化为其他类型

//表达式求值
//1表达式在计算的过程中,有哪些类型转换?
//2表达式的求值顺序是怎么样的
//类型转换   1整型提升   2算术转换 
//整形提升 C的整型算术运算总是至少一缺省整型类型的精度来进行的  为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升int main()
{char c1 = 5;//00000000000000000000000000000101//00000101 - c1char c2 = 127;//00000000000000000000000001111111char c3 = c1 + c2;  // -124//00000000000000000000000000000101//00000000000000000000000001111111//00000000000000000000000010000100//%d - 10进制的形式打印有符号的整数//11111111111111111111111110000100//10000000000000000000000001111100    -124printf("%d\n",c3);return 0;
}

// %u 打印10进制的形式无符号的整数
// int main()
// {
//     char c = 1;
//     printf("%u\n",sizeof(c)); //1
//     printf("%u\n",sizeof(+c)); //1
//     printf("%u\n",sizeof(-c)); //1//     return 0;
// }// int main()
// {
//     float f = 3.14;
//     int a = 10;//     char b = a + f; // 13
//     int c = a + f; // 13//     printf("%d\n",b);
//     printf("%d\n",c);//     return 0;
// }//相邻操作符优先级高的先算,低低后算
//相邻操作符的优先级相同的情况下,结合性起作业
// int main()
// {
//     int a = 2 + 3 * 5;//     return 0;
// }// int main()
// {
//     int i = 10;
//     i = i-- - --i * (i = -3) * i++ + ++i;
//     printf("i = %d\n", i);//     return 0;
// }int fun()
{static int count = 1;return ++count;
}int main()
{int answer;answer = fun() - fun() * fun(); //  2 - 3*4    -10printf("%d\n",answer); //输出多少return 0;}

相关文章:

C基础-操作符详解

操作符分类&#xff1a; 算数操作符&#xff1a; - * / % //算数操作符 // int main() // { // // /除法 1.整数除法(除号两端都是整数) 2浮点数除法&#xff0c;除号的两端只要有一个小数就执行小数除法 // // 除法中&#xff0c;除数为0 // int a 7 / 2; /…...

时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测

时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测。…...

【深度学习实验】线性模型(五):使用Pytorch实现线性模型:基于鸢尾花数据集,对模型进行评估(使用随机梯度下降优化器)

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 线性模型linear_model 2. 损失函数loss_function 3. 鸢尾花数据预处理 4. 初始化权重和偏置 5. 优化器 6. 迭代 7. 测试集预测 8. 实验结果评估 9. 完整代码 一、实验介…...

ADB底层原理

介绍 adb的全称为Android Debug Bridge&#xff0c;就是起到调试桥的作用。通过adb我们可以在Eclipse/Android Studio中方便通过DDMS来调试Android程序&#xff0c;说白了就是debug工具。adb是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的and…...

etcd之读性能主要影响因素

1、Raft模块-线性读ReadIndex-节点之间的RTT延时、磁盘IO 线性读时Follower节点首先会向Raft 模块发送ReadIndex请求&#xff0c;此时Raft模块会先向各节点发送心跳确认&#xff0c;一半以上节点确认 Leader 身份后由leader节点将已提交日志索引 (committed index) 封装成 Rea…...

【Stable Diffusion】安装 Comfyui 之 window版

序言 由于stable diffusion web ui无法做到对流程进行控制&#xff0c;只是点击个生成按钮后&#xff0c;一切都交给AI来处理。但是用于生产生活是需要精细化对各个流程都要进行控制的。 故也就有个今天的猪脚&#xff1a;Comfyui 步骤 下载comfyui项目配置大模型和vae下载…...

Ansys Zemax | 如何建立二向分色分光镜

分光镜(Beam splitter)可被运用在许多不同的场合。一般而言&#xff0c;入射光抵达二向分色分光镜(dichroic beam splitter)时&#xff0c;会根据波长的差异产生穿透或反射的现象。这篇文章将说明如何在OpticStudio的非序列模式(non-sequential mode)中建立二向分色分光镜&…...

Mybatis学习笔记8 查询返回专题

1.返回实体类 2.返回List<实体类> 3.返回Map 4.返回List<Map> 5.返回Map<String,Map> 6.resultMap结果集映射 7.返回总记录条数 新建模块 依赖 目录结构 1.返回实体类 如果返回多条,用单个实体接收会出异常 2.返回List<实体类> 即使返回一条记…...

【测试开发】基础篇 · 专业术语 · 软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执

【测试开发】基础篇 文章目录 【测试开发】基础篇1. 软件测试生命周期1.1 软件生命周期1.2 软件测试生命周期 2. 描述bug3. 如何定义bug的级别3.1 为什么要对bug进行级别划分3.2 bug的一些常见级别 4. bug的生命周期5. 产生争执这么怎么办&#xff08;处理人际关系&#xff09;…...

​bing许少辉乡村振兴战略下传统村落文化旅游设计images

​bing许少辉乡村振兴战略下传统村落文化旅游设计images...

第三十一章 Classes - 继承规则

第三十一章 Classes - 继承规则 继承规则 与其他基于类的语言一样&#xff0c;可以通过继承组合多个类定义。 类定义可以扩展&#xff08;或继承&#xff09;多个其他类。这些类又可以扩展其他类。 请注意&#xff0c;类不能继承 Python 中定义的类&#xff08;即 .py 文件中…...

华为云HECS安装docker并安装mysql

1、运行安装指令 yum install docker都选择y&#xff0c;直到安装成功 2、查看是否安装成功 运行版本查看指令&#xff0c;显示docker版本&#xff0c;证明安装成功 docker --version 3、启用并运行docker 3.1启用docker指令 systemctl enable docker 3.2 运行docker指令…...

MQ - 04 基础篇_存储_消息数据和元数据的存储设计

文章目录 导图概述元数据信息的存储消息数据的存储数据存储结构设计思路一 (Kafka的方案)思路二 (RocketMQ、RabbitMQ 和 Pulsar 的底层存储 BookKeeper 采用的方案)消息数据的分段实现根据偏移量定位根据索引定位 (RabbitMQ 和 RocketMQ的思路)使用场景消息数据存储格式…...

JavaScript:隐式转换、显示转换、隐式操作、显示操作

一、理解js隐式转换 JavaScript 中的隐式转换是指不需要显式地调用转换函数&#xff0c;而是在执行期间自动发生的数据类型的转换。即在使用不同类型的值进行操作时&#xff0c;JavaScript会自动进行类型转换。这种转换通常发生在不同数据类型之间进行运算或比较时。 序号分类…...

2023全新TwoNav开源网址导航系统源码 | 去授权版

2023全新TwoNav开源网址导航系统源码 已过授权 所有功能可用 测试环境&#xff1a;NginxPHP7.4MySQL5.6 一款开源的书签导航管理程序&#xff0c;界面简洁&#xff0c;安装简单&#xff0c;使用方便&#xff0c;基础功能免费。 TwoNav可帮助你将浏览器书签集中式管理&#…...

Android 12 源码分析 —— 应用层 六(StatusBar的UI创建和初始化)

Android 12 源码分析 —— 应用层 六&#xff08;StatusBar的UI创建和初始化) 在前面的文章中,我们分别介绍了Layout整体布局,以及StatusBar类的初始化.前者介绍了整体上面的布局,后者介绍了三大窗口的创建的入口处,以及需要做的准备工作.现在我们分别来细化三大窗口的UI创建和…...

华为云ROMA Connect亮相Gartner®全球应用创新及商业解决方案峰会,助力企业应用集成和数字化转型

9月13日-9月14日 Gartner全球应用创新及商业解决方案峰会在伦敦举行 本届峰会以“重塑软件交付&#xff0c;驱动业务价值”为主题&#xff0c;全球1000多位业内专家交流最新的企业应用、软件工程、解决方案架构、集成与自动化、API等企业IT战略和新兴技术热门话题。 9月13日…...

虚拟线上发布会带来颠覆性新体验,3D虚拟场景直播迸发品牌新动能

虚拟线上发布会是近年来在数字化营销领域备受关注的形式&#xff0c;而随着虚拟现实技术的不断进步&#xff0c;3D虚拟场景直播更成为了品牌宣传、推广的新选择。可以说&#xff0c;虚拟线上发布会正在以其颠覆性的新体验&#xff0c;为品牌带来全新的活力。 1.突破时空限制&am…...

Linux arm64 pte相关宏

文章目录 一、pte 和 pfn1.1 pte_pfn1.2 pfn_pte 二、其他宏参考资料 一、pte 和 pfn // linux-5.4.18/arch/arm64/include/asm/pgtable.h#define pte_pfn(pte) (__pte_to_phys(pte) >> PAGE_SHIFT) #define pfn_pte(pfn,prot) \__pte(__phys_to_pte_val((phys_addr_t)…...

MVCC:多版本并发控制案例分析(一)

&#xff08;笔记总结自b站马士兵教育课程&#xff09; 一、简介 MVCC&#xff1a;全称multi-version Concurency control&#xff0c;多版本并发控制&#xff0c;是为了解决并发读写问题存在的。MVCC的实现原理由三部分组成&#xff1a;隐藏字段、undolog、readview。 二、概…...

以数据为中心的安全市场快速增长

根据Adroit Market Research的数据&#xff0c;2021年全球以数据为中心的安全市场规模估计为27.6亿美元&#xff0c;预计到2030年将增长至393.48亿美元&#xff0c;2021年至2030年的复合年增长率为30.9%。 研究人员表示&#xff0c;以数据为中心的安全强调保护数据本身&#x…...

AUTOSAR汽车电子嵌入式编程精讲300篇-经典 AUTOSAR 安全防御能力的分析及改善(下)

目录 4.4.2 Security 攻击 4.4.3 Security 要求 4.4.4 SDSA 有效性验证 经典 AUTOSAR 安全防御能力分析...

AI绘图提示词Stable Diffusion Prompt 笔记

基础 提示词分为正向提示词&#xff08;positive prompt&#xff09;和反向提示词&#xff08;negative prompt&#xff09;&#xff0c;用来告诉AI哪些需要&#xff0c;哪些不需要词缀的权重默认值都是1&#xff0c;从左到右依次减弱&#xff0c;权重会影响画面生成结果。AI …...

xml元素值需要保留space

XmlReaderSettings.IgnoreWhitespace 属性 如果忽略空白&#xff0c;则为 true&#xff1b;否则为 false。 默认值为 false。 示例 下面创建一个设置对象&#xff0c;该对象可用于构造一个读取器&#xff0c;该读取器去除处理指令、注释和微不足道的空白。 StreamReader tex…...

Eclipse开源代码下载

当前插件开发&#xff0c;需要修改eclipse源码&#xff0c;如需要修改remote相关的代码&#xff0c;所以需要下载相关源码。网上大多资料都说的不清不楚的&#xff0c;也可能我太小白&#xff0c;不明白&#xff0c;反正就是折腾了一两天才感觉有点思路&#xff0c;改如何找源码…...

python多线程、进程

1、 并行和并发 &#xff08;1&#xff09;并发&#xff1a;一定周期内&#xff0c;多个任务来回切换执行&#xff0c;宏观上形成“该周期内有多个任务在同时进行”&#xff1b;但同一时间点&#xff0c;只有一个任务在执行。 举例&#xff1a; 你想在2小时内同时完成做饭、扫…...

Vue基础之模板语法介绍

前言 上篇我分享了关于Vue的入门&#xff0c;简单的入了个门。本篇文章将要分享的内容为Vue的模板语法。 一、插值 1.1、文本 1.2、html 1.3、属性 1.4、class、style绑定 1.5、表达式 在Vue的模板语法中&#xff0c;插值是一种常用的方式来动态地将数据渲染到视图中。Vue使用双…...

【SLAM】 前端-视觉里程计之特征点

前端-视觉里程计之特征点 参考资料&#xff1a; 以不变应万变&#xff1a;前端-视觉里程计之特征点 视觉SLAM——特征点法 task05 本次了解了特征点是由关键子和描述子组成&#xff0c;并且对比了SIFT、SURF等七种获取特征点的方法&#xff0c;同时对比了SIFT、SURF和ORB方法…...

Android笔记(二十九):利用python自动生成多语言

背景 项目需要支持十几种多语言&#xff0c;而且每个版本的新功能ui都有很多地方需要多语言&#xff0c;如果手动添加非常耗时&#xff0c;于是设计了一个python脚本&#xff0c;通过excel表格转化多语言到项目values/strings文件内 步骤 android工程项目结构 脚本位于langu…...

【C++STL基础入门】list的运算符重载和关于list的算法

文章目录 前言一、list运算符1.1 逻辑运算符1.2 赋值运算符 二、list相关算法2.1 查找函数总结 前言 C标准模板库&#xff08;STL&#xff09;是一组强大而灵活的工具&#xff0c;用于处理数据结构和算法。其中&#xff0c;std::list是STL中的一个重要容器&#xff0c;它实现了…...

兰州专业做网站/seo排名软件怎么做

undefined reference to __gxx_personality_v0 刚刚在做一个实验&#xff0c;编译的时候出了一点问题&#xff0c;下面附上代码&#xff1a;#include <stdio.h> #include <stdlib.h> #include <unistd.h>static void my_exit1(void); static void my_exit2(v…...

wordpress 仿虎嗅/凡科建站客服电话

什么是授权? 即该用户是否有权限访问某个资源.(即校验权限)Shiro权限的实现方式 1. 硬编码方式:实现授权访问校验. 在自定义中的realm中的授权方法中进行编写代码.根据传进来的PrincipalCollection获取用户对象.该授权方法的返回值是AuthorizationInfo,该对象是一个接口,因此我…...

网站数据链接怎么做/百度优化

引用类型的检查 本章重点内容。 有时候需要在运行时判断一个对象是否属于某个引用类型&#xff0c;这是可以引用instanceof运算符。instanceof运算符语法格式如下&#xff1a; > obj instanceof typeobj是一个对象&#xff0c;type是引用类型&#xff0c;如果obj对象是typ…...

企业网站建设的一般原则/seo优化网络公司

BeautifulSoup4 官方文档 是一个Python库&#xff0c;用于从HTML和XML文件中提取数据。它与您最喜欢的解析器一起使用&#xff0c;提供导航&#xff0c;搜索和修改解析树的惯用方法。它通常可以节省程序员数小时或数天的工作量。 1.安装BeautifulSoup4 pip install bs4 2.详细操…...

公司网站建设哪家好/网站营销网站营销推广

前言&#xff1a;当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务器会返回一个包含HTTP状态码的信息头&#xff08;server header&#xff09;用以响应浏览器的请求。 HTTP状态码&#xf…...

学做面包到什么网站/如何快速收录一个网站的信息

作者&#xff1a;XMOS&#xff0c;排版整理&#xff1a;晓宇微信公众号&#xff1a;芯片之家(ID&#xff1a;chiphome-dy)近日&#xff0c;英国半导体科技公司XMOS宣布推出Xcore.ai &#xff0c;它是一款面向AIoT市场的超强性能跨界处理器&#xff0c;该处理器可在单个设备中提…...