随笔分类 -  基础C/C++

1 2 下一页
同样是占32个坑,凭啥你float就比int的范围更大?
摘要:原文出处:https://zhuanlan.zhihu.com/p/84453627?from_voters_page=true ok,这里先说明一下,假设是在32位的机器上,int是32位。而float使用的是IEEE 754标准的单精度浮点数格式也是占用32位。 这时候float和int都是占用 阅读全文
posted @ 2021-05-19 13:58 any91 阅读(1961) 评论(0) 推荐(0)
sscanf
摘要:如果被解析参数不为空,则输出参数不能个别设置为NULL,否则会崩溃。 阅读全文
posted @ 2018-03-12 15:53 any91 阅读(171) 评论(0) 推荐(0)
如何判断float值有效
摘要:1 // 一个浮点数是否有效,首先要看其是否是一个数字(是:_isnan为0),其次还要看其没有超出表示范围(是:_finite为1) 2 // 注意_finite是有限的意思 3 #include <float.h> 4 CString strOut; 5 float f; 6 int nan, 阅读全文
posted @ 2017-10-17 08:44 any91 阅读(2344) 评论(0) 推荐(0)
C++ 虚继承
摘要:转自:http://www.cnblogs.com/biyeymyhjob/archive/2012/11/12/2766277.html 虚继承和虚基类的定义是非常的简单的,同时也是非常容易判断一个继承是否是虚继承的,虽然这两个概念的定义是非常的简单明确的,但是在C++语言中虚继承作为一个比较生僻 阅读全文
posted @ 2017-07-19 17:40 any91 阅读(690) 评论(0) 推荐(0)
float与double的范围和精度
摘要:1. 范围 float和double的范围是由指数的位数来决定的。 float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bits(尾数位) double: 1bit(符号位) 11bits(指数位) 52bits(尾数位) 阅读全文
posted @ 2017-06-26 17:41 any91 阅读(2219) 评论(0) 推荐(0)
float浮点数的二进制存储方式及转换
摘要:int和float都是4字节32位表示形式。为什么float的范围大于int? float精度为6~7位。1.66*10^10的数字结果并不是166 0000 0000 指数越大,误差越大。 这些问题,都是浮点数的存储方式造成的。 float和double在存储方式上都是遵从IEEE的规范的,flo 阅读全文
posted @ 2017-06-26 17:29 any91 阅读(2055) 评论(1) 推荐(0)
incompatible implicit declaration of built-in function 'fabs'
摘要:形如: float a = -3.0; float b = fabs(a); 形参数据类型和实参数据类型完全一致,却还报警告: incompatible implicit declaration of built-in function 'fabs' 只要包含头文件#include <math.h> 阅读全文
posted @ 2017-05-08 16:51 any91 阅读(1068) 评论(0) 推荐(0)
关于typedef和struct
摘要:在struct中使用自身,需要加struct关键字,无论带不带typedef,例如: struct A { int a; struct A *pA; }; 在定义struct方面尽量不要使用typedef,具体可参照<C专家编程> 阅读全文
posted @ 2017-04-20 16:17 any91 阅读(154) 评论(0) 推荐(0)
float使用0xFF
摘要:1. float f = 0xFFFFFFFF; 这一句完全是错误的用法,它不会使f变量内存变为4个0xFF,因为0xFFFFFFFF根本就不是有效的float数值,编译器无从处理,如果用printf('%x')打印f的值,结果一定不是0xFFFFFFFF。 2. 正确的用法 float f; un 阅读全文
posted @ 2017-04-10 16:02 any91 阅读(952) 评论(0) 推荐(0)
char 、signed char、unsigned char
摘要:看如下代码: char c = -1; signed char sc = -1; unsigned char uc = -1; printf("c=%d, sc=%d, uc=%d, cx=%x, scx=%x, ucx=%x\n, c, sc, uc, c, sc, uc); Windows平台下 阅读全文
posted @ 2017-03-31 15:29 any91 阅读(458) 评论(0) 推荐(0)
结构体全局变量成员赋值
摘要:为什么全局结构体变量成员只能在函数内调用? 因为g.a=1是赋值语句,不是初始化语句,赋值语句只能运行的时候可以执行。 阅读全文
posted @ 2017-03-16 17:08 any91 阅读(751) 评论(0) 推荐(0)
C++面试宝典2011版
摘要:1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化 阅读全文
posted @ 2014-02-07 17:27 any91 阅读(1345) 评论(0) 推荐(0)
二维数组和指针
摘要:二维数组和指针⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知道,一个二维数组在计算机中存储时,是按照先行后列的顺序依次存储的,当把每一行看作一个整体,即视为一个大的数组元素时,这个存储的二维数组也就变成了一个一维数组了。而每个大数组元素对应二维数组的一行,我们就称之为行数组元素,显然每个行数组元素都是一个一维数组下面我们讨论指针和二维数组元素的对应关系,清楚了二者之间的关系,就能用指针处理二维数组了。设p是指向数组a的指针变量,若有:p=a[0];则p+j将指向a[0]数组中的元素a[0][j]。由于a[0]、a[1]┅a[M-1]等各个行 阅读全文
posted @ 2013-12-06 23:11 any91 阅读(268) 评论(0) 推荐(0)
十进制整数、浮点数与十六进制字符串互转
摘要:/** * 函数:Hex2Dec * 描述:十六进制字符串转十进制整数 * 参数:pstrHex 十六进制字符串(以数值的字节顺序) * nLen 字符串长度(不含NULL结束符) * 返回:十进制整数 */ int Hex2Int(unsigned char *pstrHex, int nLen) { int i, j = 0; int nR... 阅读全文
posted @ 2013-11-28 17:05 any91 阅读(1490) 评论(0) 推荐(0)
十进制转化成二进制的原理
摘要:假设一个十进制的数能够写成二进制的edcba形式那么这个十进制的数一定等于a(2^0)+b(2^1)+c(2^2)+d(2^3)+e(2^4)将以上数列除以2,所得的余数是a,商是b(2^0)+c(2^1)+d(2^2)+e(2^3)再除以二,余数为b。当这这个数不能再被2除时,把所有的余数反过来写,就得到数列edcba,这既是方法也是原理 阅读全文
posted @ 2013-11-28 12:58 any91 阅读(755) 评论(0) 推荐(0)
c语言printf()输出格式大全
摘要:1.转换说明符 %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99) %c 字符 %d 有符号十进制整数 %f 浮点数(包括float和doulbe) %e(%E) 浮点数指数输出[e-(E-)记数法] %g(%G) 浮点数不显无意义的零"0" %i 有符号十进制整数(与%d相同) %u 无符号十进制整数 %o 八进制整数 e.g. 0123 %x(%X) 十六进制整数0f(0F) e.g. 0x1234 %p 指针 %s ... 阅读全文
posted @ 2013-11-26 20:55 any91 阅读(1889) 评论(0) 推荐(0)
BCD码、十六进制与十进制互转
摘要:转载:http://www.cppblog.com/tdweng/articles/139022.html在做嵌入式软件的设计中,经常会遇到十六进制、BCD码与十进制之间的转换,最近做M1卡的应用中,涉及了大量的十六进制、BCD码与十进制之间的转换。笔者通过对BCD码、十六进制 权的理解,轻松的实现了他们之间的互换。#include #include ///////////////////////////////////////////////////// // //功能:二进制取反 // //输入:const unsigned char *src 二进制数据 // int length .. 阅读全文
posted @ 2013-11-11 14:31 any91 阅读(2001) 评论(0) 推荐(0)
C语言中为什么float型数据的范围是3.4E-38~3.4E+38
摘要:因为float所占的位数决定了他的大小位数就是计算机的存储所需要的bit多少32位浮点,64位双精度浮点范围不同//////////////////////以前学计算系统基础的时候有这么个说法计算机存储的形式都是01了,在32位的01中,第一位表示正负,最后8位表示指数,中间的表示小数。最后化成1.几的形式的多少次方那是自己定义的。c也有自己的定义方法吧:对于单精度浮点数来说,有阶码8位表示正负当尾数渠道全1时再加上小数点前面的1,阶码取到最大正数127(8位,正数最大127,负数最小-128),浮点数渠道正数的最大值。+1.111111111111111111111*2^1271.后面23个 阅读全文
posted @ 2013-10-09 13:46 any91 阅读(1876) 评论(0) 推荐(0)
C语言学习笔记
摘要:1、各进制整型常量前缀:十进制(无),八进制(0),十六进制(0x或0X)2、无符号整型后缀:u或U 长整型后缀:l或L3、单字节有符号整数范围是-128~127,而不是-127~1274、十进制实数在计算机中用二进制表示是有误差的5、C语言中,实数常量只有十进制表示,实数常量的后缀是f或F,实数常量可以写作普通的小数形式,也可以写作“指数”形式,由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。6、实数变量有两种:单精度(float)和双精度(double),在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供 阅读全文
posted @ 2013-09-29 17:47 any91 阅读(443) 评论(0) 推荐(0)
写出float x 与“零值”比较的if语句——一道面试题分析
摘要:写出float x 与“零值”比较的if语句 请写出 float x 与“零值”比较的 if 语句: const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON) 不可将浮点变量用“==”或“!=”与数字比较,应该设法转化 阅读全文
posted @ 2013-09-18 10:39 any91 阅读(1482) 评论(0) 推荐(0)

1 2 下一页