C 语言基础教程(我的C之旅开始了)[七]

2016-02-19 11:49 5 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是C 语言基础教程(我的C之旅开始了)[七],一起来学习了解下吧!

【 tulaoshi.com - 编程语言 】

17. 基本数据类型:布尔型(_Bool type)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)_Bool 型是 C99 添加的,用于表示布尔值,亦即是表示逻辑真true)和逻辑假false)。因为 C 用 1 表示 true ,0 表示 false ,所以 _Bool 实际上是整数类型。理论上 _Bool 只需要 1 bit 存储单元,因为1 bit 就足以表示 0 和 1 。事实上,_Bool 是无符号整型,一般占用 1 字节。例如: _Bool flag = 1;flag = 0; 包含标准头文件 stdbool.h 后,我们可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。例如: bool flag = true;flag = false; 这么做是为了和 C++ 兼容。 注意stdbool.h 是 C99 添加的。

18. 基本数据类型:浮点类型

1. float, double, 以及 long double 前面所说的数据类型只能用于处理整数。如果我们需要使用小数,就要使用浮点类型floating-point)。C 提供了三种浮点类型:float, double以及 long double,  C 标准要求 float 类型至少要能精确表示到小数点后6位,并且整数部分的表示范围至少要达到 10-37 -- 10+37float 一般是 32 位的。 C 标准规定double 类型的整数部分的最小表示范围和 float 一样,都是  10-37 10+37,但是它要求 double 类型的小数部分至少要能精确到小数点后 10 位。double 通常是 64 位的。     C 还提供了 long double 类型,目的是提供一种比 double 更加精确的类型。然而,C 标准仅仅规定 long double 至少要和 double 一样精确。  2. 声明浮点型变量     浮点型变量的声明和初始化与整型变量一样。例如: float f_1, f_2;double d_1;float f_3 = 6.63;long double ld_1;  3. 浮点型常量 浮点型常量有多种写法。其基本形式为:首先写整数部分(可以带符号),接着写小数部分,然后写 e 或者 E,最后再写一个有符号整数。例如: +1.2E+5
1.5e-9
-5.0e10 其中 e 或 E 被称为阶码标志,e 或 E 后面的有符号整数被称为阶码。阶码代表 10 的阶码次方。例如:+1.2E+5 的值是 1.2 * 105。假设 A 为 e 前面的部分,N 是 e 后面的部分,则 AeN 等于 A * 10N。此外,正号可以省略不写。小数部分也不是必需的,也就是说,5e3 也是正确的。阶码标志和阶码也可以不写,如:13.5。小数点后面,阶码标志之前的那部分整数可以不写(9.E5),小数点之前的整数也可以不写(.96e-8),但是不能同时都不写。例如: 56.
.5
3.14
3e6
.6E-8 注意:浮点型常量中不能有空格!例如: 3.21e -12     /*  有空格,错! */3.14 e5       /*  有空格,错! */ 浮点型常量默认是 double 类型的。假设 var_f 是 float 类型的变量,如果有以下语句: var_f = 9.0 * 3.0; 那么 9.0 和 3.0 都是 double 类型的常量。它们的乘积也是 double 型的。在进行赋值的时候,这个乘积被转化成 float 类型,然后再赋值给 var_f。     当然,我们也可以指定浮点型常量的类型。在浮点型常量后面添上 f 或者 F,编译器就会用 float 类型来处理这个常量。例如:1.5f2.1e6F。在后面添上 l 或者 L 的话,编译器会用 long double 类型来处理这个常量。例如:4.1l50.2E5L。最好用大写 L,因为小写 l 容易和数字 1 混淆。     C99 新增了一种表示浮点型常量的格式:使用十六进制前缀(0x 或 0X,0 是数字 0,不是字母 o ),用 pP 代替前面所说的 e 或 E,而且阶码代表的是 2 的阶码次方。例如: 0xb.1ep5 其中 b 等于十进制中的 11, .1e等于 1/1614/256, p5 等于 25,也就是 512。这个浮点型常量转换成十进制就是:(11 + 1/16 + 14/256)*25 = 5692 注意:并非所有编译器都支持 C99 新增的这种格式!  4. 输出浮点数     格式限定符 %f 命令 printf 函数以十进制形式输出 float 和 double 类型的浮点数;%e 命令 printf 函数以指数形式输出float 和 double 类型的浮点数;%a%A 命令 printf 函数以 C99 新增的那种十六进制格式输出,但是并非所有编译器都支持。如果您要输出 long double 类型的浮点数,请用 %Lf%Le%La,或者 %LA。例如: /* showfloat.c – 用两种形式表示浮点数 */ #include stdio.h int main(void){    float var_f = 5.0;    double var_df = 3.14e2;    long double var_ld = 6.51e-5;     printf("%f is equal to %en", var_f, var_f);    printf("%f is equal to %en", var_df, var_df);    printf("%Lf is equal to %Len", var_ld, var_ld);     return 0;} 输出如下: 5.000000 is equal to 5.000000e+00314.000000 is equal to 3.140000e+020.000065 is equal to 6.510000e-05  注意:以上是我在 Suse Linux 10 下使用 gcc 4.02 编译运行得到的输出。如果使用 Dev-C++ 4.9.9.2 编译运行本程序,则不能正常输出 var_ld。大概是因为 Dev-C++ 使用的编译器 gcc 中,long double 是 96 位的,而它使用函数库中的 printf 函数却把 long double 当作 64 位的来处理。  5. 浮点数上溢(Overflow)和下溢(Underflow)     假设您的编译器中,float 最大只能达到 3.4e38,如果有以下语句: float toobig = 3.4E38 * 100.0f;printf("%en", toobig); 这必然导致上溢!因为 toobig 无法表示 3.4E38 和 100.0f 的乘积。上溢的后果过去是没有定义的,不过现在 C 规定如果发生上溢,则产生一个表示无穷大的特殊值。因此,toobig 的值最终会变成一个表示无穷大的特殊值。进而,printf 函数会输出类似 inf 或者 infinity 的字眼。     对一个绝对值非常小的浮点数进行除法,并且导致这个浮点数的精度降低,称之为下溢。打个比方,假设 3.1415e-10 除以 10 后,变成 0.3141e-10,这就是下溢。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1598725.html

延伸阅读
入门简介 变量 C++数据类型 C++操作符 C++中的函数 main函数 数组 字符串数组 字符串操作函数 C++是个强大的语言,可以用于做别的语言做不了的工作。但是,这种强大功能是有代价的。开始使用C++时,你可能会遇到内存溢出和访问失效等问题,使程序死机。这里用最简短的篇幅介绍C++语言基础。C++语言本身有专著介绍,这种书...
if语句 if语句用于测试条件并在条件为真时执行一桌或几条语句。 说明:if表达式后面不能带分号,否则它本身表示代码中的空语句,使编译器将空语句解释为在条件为真时执行的语句。 if (x == 10); // Warning! Extra semicolon! DoSomething(x); 这里DoSomething()函数总会执行,因为编译器不把它看成在条件为真时执行...
终于来到第二章了,真是不容易(呵呵,大家少安毋躁)。 这章总的来说就是对C#的一个总体的概述。首先通过对以往的编程语言(汇编,C/C++,java,vb)的回顾,强调这些语言与C#的联系及C#对这些语言优秀特性的继承,试图在其中打到C#的影子。然后对现在市面上流行的编程语言与C#进行比较,从而突出C#做为新一代的编程语言的重要性及优越性。之...
各位贵安了!(先别骂我)最近刚开学,所以事情就多了点,上网的时间也不多,所以一直这个文章的下一篇也没出来。能得到大家的抬爱,本人甚是感激!对于C#的学习我也是刚刚入门,有什么不对的地方,敬请指教!好了,闲言少叙,进入正题。 第一章。万事开头难,什么事,都得从第一步开始。这一章主要是对.NET的一个概述,使我们对.NET有个概...
从程序流程的角度来看,程序可以分为三种基本结构, 即顺序结构、分支结构、循环结构。 这三种基本结构可以组成所有的各种复杂程序。C语言提供了多种语句来实现这些程序结构。 本文将介绍这些基本语句及其应用,使读者对C程序有一个初步的熟悉, 为以后的学习打下基础。 C程序的语句 C程序的执行部分是由语句组成的。 程序的功能...

经验教程

168

收藏

7
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部