float、double、long double还有sizeof

1、_Bool类型:用于表示布尔值,即逻辑值false和true。

  为什么_Bool类型是一种整数类型?答:因为C语言用值1表示true,值0表示false,所以,就是这样啊。😊

2、可移植类型:stdint.hinttypes.h   :对于3.4.5这一节,委实有些看不懂,遇到就再看看吧,PASS

3、3.4.6 float、double和long double

 (1)、声明浮点型变量:float noah=6.63e-34;

 (2)表示浮点数:正号可以省略。可以没有小数点(如,2E5)。

 (3)默认情况下,编译器假定浮点型常量是double类型的精度,虽然这样精度高,但是减慢运行程序的速度。

     在浮点数后面加上f或F后缀可覆盖默认设置,编译器会将浮点数常量看作是float类型

     在浮点数后面加上l或L后缀可使数字成为long double类型

      没有后缀的浮点型常量是double类型。

 (4)用16进制也可以表示浮点型常量。

4、打印浮点值:printf()函数使用%f转换说明打印10进制计数法的float和double类型浮点数,%e打印指数计数法的浮点数。

5、浮点值的上溢和下溢:(1)当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢;

    (2)当对一个很小的数做除法,如,0.1234E-10除以10,得到的结果为0.0123E-10,虽然得到了结果,但是在计算过程中却损失了原末尾有效位上的数字,这种情况叫做下溢。

6、下图代码是浮点数舍入错误,得出的结果是一个垃圾值。

屏幕截图 2025-08-12 221217

   *有效数字:从左边第一个不是0的数字起,后面的所有数字都是有效数字。

分析原因:float类型的数字通常只能存储按指数比例缩小或放大的6或7位有效数字,但是2e20则是2后面有20个0,所以,要使程序能正确运算,程序至少要存储21位有效数字。

二、3.4.7复数和虚数类型:略

3.4.9如何知道当前系统的指定类型的大小是多少?

屏幕截图 2025-08-17 220625

  代码注释:sizeof是C语言的内置运算符,以字节为单位给出指定类型的字节大小,其中%zd转换说明匹配sizeof的返回类型(仅支持C99和C11的编译器),非C99和C11可用%u或%lu代替%zd。

3.5使用数据类型:(1)int cost=12.99;如果这样写的话,cost的值变成了12,直接丢弃小数点后面的数字;(2)float a=3.1415926536;如果这样写,会损失一些精度,因为float仅支持有效数字6位。

  许多程序员与和公司内部都有系统化的命名约定,如,用i _前缀表示int类型us_前缀表示unsigned short 类型。这样,i_smart 是int 类型的变量,us_versmart 是unsigned short 类型的变量。

3.7.2刷新输出:printf()何时把输出发送到屏幕上?

   答:先把语句发送到一个叫缓冲区的存储区域,然后再不断发送到屏幕上,那么何时把缓冲区的内容发送到屏幕上?当缓冲区满、遇到换行字符或需要输入的时候(从缓冲区把数据                 发送到屏幕上被称为刷新缓冲区

         如,printf()没有填满缓冲区,也没有换行符,但是下一个scanf()语句要求用户输入,那么这会迫使printf()的输出被发送到屏幕上。

 

posted @ 2025-08-12 23:16  豆豆豆豆沙包  阅读(59)  评论(0)    收藏  举报