自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Wsaka的博客

Wsaka的博客

  • 博客(22)
  • 资源 (5)
  • 收藏
  • 关注

转载 浮点数比较大小的问题(转载)

浮点数比较大小,由于精度问题,所以直接比较有时可能会出错。单精度数7位有效数字。 (float)双精度数16位有效数字。(double)单精度数的尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。 双精度的尾数用52位存储,2^(52+1) = 900...

2019-07-26 10:54:59 922

转载 同步异步、阻塞非阻塞

文章转自:https://www.cnblogs.com/Anker/p/5965654.html博主的结论不敢确定,但是文章中的很多观点很有用linux网络IO中涉及到如下模型:(1)阻塞式IO(2)非阻塞式IO(3)IO多路复用(4)信号驱动IO(5)异步IO在知乎上面看到一些解释如下:截图如下:3、总结    同步和异步...

2018-08-10 16:46:00 217

转载 const与函数重载的关系

本文转自https://www.cnblogs.com/qingergege/p/7609533.htmlconst到底是不是一个重载的参考对象,请看下面的例子class A{public:    void f(int i){ std::cout&lt;&lt;"1";}; //函数1    void f(int i) const { std::cout&lt;&lt;"2" ;};//函数2};...

2018-06-18 23:38:05 1513 2

转载 结构体内存对其原则

原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。原则2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储。(struct a里存有struct b,b里有ch...

2018-05-06 23:00:18 165

原创 sizeof()与strlen的区别

strlen与sizeof的区别:sizeof是一个运算符,用来计算数据类型的大小;strlen是计算字符串有效长度的。srlen能够计算字符串的长度,但是不可以计算字符数组的长度。例如:char ch1[] = "123456";char ch2[] = {'1','2','3','4'};int value1 = strlen(ch1);int value2 = strlen(ch2);pri...

2018-04-13 22:16:23 217

原创 值传递

int fun(a){       //2、也就是说a=30 a = 10;  //3、此时将a重新赋值为10,而不是第一次理解的30=10。 return a;}int main(){ int b = 30; int c=fun(b);    //1、第一步将参数赋值为30, printf("%d\n",c);}...

2018-04-08 15:58:42 106

原创 初识缓冲区

1.默认情况下,程序没有结束,也没有关闭文件,缓冲区满了以后自动刷新缓冲区2.文件正常关闭(fclose()),缓冲区内容也会写进文件3.文件布关闭,程序没有结束,实时刷新,调用fflush也可以将缓冲区内容写进文件4.程序正常关闭,缓冲区内容也会写进文件。fflush()函数可以强制刷新缓冲区,即使缓冲区未满,数据也可以写入文件中。但是这样做会降低效率...

2018-04-08 14:02:08 134

原创 scanf gets fgets printf puts fputs区别

输入:scanf("%c",&amp;a)这个是可以读取空格的。      scanf("%s",a)这个不可以读取空格、回车,遇到空格回车结束读取,并在结尾添加\0。注意预留一个位置给\0。      gets(str),可以读取空格,注意预留一个位置给\0。      scanf与gets都不做越界检查,不安全      fgets(s,int size,stdin):      从strea...

2018-04-08 13:53:31 375

原创 short a =0xfffe; printf("%x",a);打印问题

unsigned short a = 0xfffe;printf("%x",a);  打印结果为fffeshort a = 0xfffe;printf("%x",a);  打印结果为fffffffe,为何会产生这样的差异?查看https://stackoverflow.com/questions/26392736/sign-extension-query-in-case-of-short的回答可以...

2018-04-05 20:53:52 2047

转载 printf输出格式总结

1) 整数%d  整数的参数会被转成有符号的十进制数字%u  整数的参数会被转成无符号的十进制数字%o  整数的参数会被转成无符号的八进制数字%x  整数的参数会被转成无符号的十六进制数字,并以小写abcdef 表示%X  整数的参数会被转成无符号的十六进制数字,并以大写ABCDEF 表示浮点型数%f double  型的参数会被转成十进制数字,并取到小数点以下六位,四舍五入%e double  ...

2018-02-09 13:09:31 942

原创 &和*的区别

变量a 本质上代表一个存储单元。CPU通过该存储单元的地址访问该存储单元中的数据。所以a本来代表两个值:存储单元的地址和储单元中的数据。于是就有了二异性。为了消除这种二义性,C语言规定a表示存储单元中的数据,&a表示存储单元的地址。a存储单元中的数据可以是一个普通数值,也可以是另一个存储单元的地址,比如:a = &b; 语句就是将b的存储单元的地址存入a存储单元中。C语言规定*a代表a中存储的

2018-02-07 01:20:02 3989 1

转载 &与*的区别

变量a 本质上代表一个存储单元。CPU通过该存储单元的地址访问该存储单元中的数据。所以a本来代表两个值:存储单元的地址和储单元中的数据。于是就有了二异性。为了消除这种二义性,C语言规定a表示存储单元中的数据,&a表示存储单元的地址。a存储单元中的数据可以是一个普通数值,也可以是另一个存储单元的地址,比如:a = &b; 语句就是将b的存储单元的地址存入a存储单元中。C语言规定*a代表a中存储的

2018-02-07 00:54:41 2040 2

转载 Vim中安装Taglist教程

将vim 改造成功能强大的IDE系列之二『插件介绍』Taglist是vim的一个插件,提供源代码符号的结构化视图。效果图:(直接使用了别人的图片。在我机器上也差不多~) 『下载和安装』         1)从http://www.vim.org/scripts/script.php?script_id=273下载安装包,也可以从http://

2018-01-30 17:49:46 1292

原创 三目运算符

xxx ? x : y;若xxx为真,执行x若xxx为假,执行y

2018-01-29 15:18:09 174

原创 scanf("%d\n",&a);中\n带来的问题的解释

第一次输入数字+回车,这个回车被编译器默认为分隔符,相当于scanf()只接受了“%d”,与其格式不匹配,继续要求你输入数据,当第二次随便输入一个数据之后,按下回车,这时编译器知道第一个回车不是分隔符,而是需要的匹配的格式。补充:scanf("%c",&a);当输入字符的时候,我们按下任意字符 + 回车的时候,回车没有被当作为分隔符,而是作为一个转义字符与输入的字符一起保存在缓存区。第

2018-01-29 14:50:19 7210

原创 scanf为什么要取地址,而不直接使用变量名

参考这个回答。int a;scanf("%d",&a);采用取地址是为了改变a的值,按照上述回答可以知道,若采用变量名a,a的值仅在scanf这个函数中发生改变,函数之外的a值没有变化,也就是说a的值并不是最终键盘上输入的值。为了让a的值发生彻底待变,需要在scanf()函数中采用取地址值让a的值发生改变。

2018-01-27 00:03:47 5284 2

转载 -128的补码解释

作者:何新宇链接:https://www.zhihu.com/question/20159860/answer/21113783来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。以前写过一篇blog:补码、负数和减法,尽管不是很对题,但依然希望能给题主带来帮助---背景复习c++的时候遇到二进制编码问题,上网搜索了

2018-01-22 17:12:55 13189 6

转载 c/c++ 头文件

一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是

2018-01-22 17:01:57 448

转载 instanceof用法

Java代码  interface A{        }  class B implements A{         }  class C extends B{         }  public class Iinstanceof {        public static void main(String[] args) {  

2017-09-05 16:01:39 257

转载 强制类型转换

在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换。      在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。因为子类拥有比父类更多的属性、更强的功能,所以父类转换为子类需要强制。那么,是不是只要是父类转换为子类就会成功呢?其实不然,他们之间的强制类型转换是有条件的。  

2017-09-02 22:27:23 161

转载 普通代码块,静态代码块,构造代码块的区别

执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。1 普通代码块 1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” 2 public class CodeBlock01{ 3

2017-08-31 14:54:04 263 1

转载 myelipse调试及step into/over/return的区别

首先来讲一下step into step over step return的区别:step into就是单步执行,遇到子函数就进入并且继续单步执行;(F5)step over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。(F6)step return就是单步执行到子函数内时,用step return就可以执行完子

2017-08-31 12:28:29 322

wordEng.cpp

qt读取word文档中的内容

2019-08-16

C/C++ 控制MAC系统音量

项目需要使用C/C++控制MAC OS系统的音量,研究半天找不到MAC提供控制系统音量的API,便采用一种比较low的方法实现功能,代码(代码摘自QT项目)见文档。如果有小伙伴找到更高级的方法,请与我分享下,不胜感激。

2019-03-08

Mac OS 判断网络是否连接

Mac os系统 判断网络是否连接

2019-03-01

已经编译好的PJSIP库

已经编译好的pjsip库 , 但是版本比较低 , 基本功能都已经包含 , 初学者可以参考学习.

2018-10-09

基于qt和PJSIP库的小项目

基于qt和PJSIP库的小项目 , 可以为初学者学习PJSIP库提供参考 .

2018-10-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除