最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C 語言基礎(chǔ)教程(我的C之旅開始了)[七]

 更新時間:2007年02月25日 00:00:00   作者:  

17. 基本數(shù)據(jù)類型:布爾型(_Bool type)

_Bool 型是 C99 添加的,用于表示布爾值,亦即是表示邏輯真true)和邏輯假false)。因為 C 用 1 表示 true ,0 表示 false ,所以 _Bool 實際上是整數(shù)類型。理論上 _Bool 只需要 1 bit 存儲單元,因為1 bit 就足以表示 0 和 1 。事實上,_Bool 是無符號整型,一般占用 1 字節(jié)。例如:
 
_Bool flag = 1;
flag = 0;
 
包含標準頭文件 stdbool.h 后,我們可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。例如:
 
bool flag = true;
flag = false;
 
這么做是為了和 C++ 兼容。
 
注意stdbool.h 是 C99 添加的。

18. 基本數(shù)據(jù)類型:浮點類型

1. float, double, 以及 long double
 
前面所說的數(shù)據(jù)類型只能用于處理整數(shù)。如果我們需要使用小數(shù),就要使用浮點類型floating-point)。C 提供了三種浮點類型:float, double以及 long double。,
 
C 標準要求 float 類型至少要能精確表示到小數(shù)點后6位,并且整數(shù)部分的表示范圍至少要達到 10-37 -- 10+37。float 一般是 32 位的。
 
C 標準規(guī)定double 類型的整數(shù)部分的最小表示范圍和 float 一樣,都是  10-37 10+37,但是它要求 double 類型的小數(shù)部分至少要能精確到小數(shù)點后 10 位。double 通常是 64 位的。
 
    C 還提供了 long double 類型,目的是提供一種比 double 更加精確的類型。然而,C 標準僅僅規(guī)定 long double 至少要和 double 一樣精確。
 
 
2. 聲明浮點型變量
 
    浮點型變量的聲明和初始化與整型變量一樣。例如:
 
float f_1, f_2;
double d_1;
float f_3 = 6.63;
long double ld_1;
 
 
3. 浮點型常量
 
浮點型常量有多種寫法。其基本形式為:首先寫整數(shù)部分(可以帶符號),接著寫小數(shù)部分,然后寫 e 或者 E,最后再寫一個有符號整數(shù)。例如:
 
+1.2E+5
1.5e-9
-5.0e10
 
其中 e 或 E 被稱為階碼標志,e 或 E 后面的有符號整數(shù)被稱為階碼。階碼代表 10 的階碼次方。例如:+1.2E+5 的值是 1.2 * 105。假設(shè) A 為 e 前面的部分,N 是 e 后面的部分,則 AeN 等于 A * 10N。此外,正號可以省略不寫。小數(shù)部分也不是必需的,也就是說,5e3 也是正確的。階碼標志和階碼也可以不寫,如:13.5。小數(shù)點后面,階碼標志之前的那部分整數(shù)可以不寫(9.E5),小數(shù)點之前的整數(shù)也可以不寫(.96e-8),但是不能同時都不寫。例如:
 
56.
.5
3.14
3e6
.6E-8
 
注意:浮點型常量中不能有空格!例如:
 
3.21e -12     /*  有空格,錯! */
3.14 e5       /*  有空格,錯! */
 
浮點型常量默認是 double 類型的。假設(shè) var_f 是 float 類型的變量,如果有以下語句:
 
var_f = 9.0 * 3.0;
 
那么 9.0 和 3.0 都是 double 類型的常量。它們的乘積也是 double 型的。在進行賦值的時候,這個乘積被轉(zhuǎn)化成 float 類型,然后再賦值給 var_f。
 
    當(dāng)然,我們也可以指定浮點型常量的類型。在浮點型常量后面添上 f 或者 F,編譯器就會用 float 類型來處理這個常量。例如:1.5f,2.1e6F。在后面添上 l 或者 L 的話,編譯器會用 long double 類型來處理這個常量。例如:4.1l,50.2E5L。最好用大寫 L,因為小寫 l 容易和數(shù)字 1 混淆。
 
    C99 新增了一種表示浮點型常量的格式:使用十六進制前綴(0x 或 0X,0 是數(shù)字 0,不是字母 o ),用 pP 代替前面所說的 e 或 E,而且階碼代表的是 2 的階碼次方。例如:
 
0xb.1ep5
 
其中 b 等于十進制中的 11, .1e等于 1/1614/256, p5 等于 25,也就是 512。這個浮點型常量轉(zhuǎn)換成十進制就是:(11 + 1/16 + 14/256)*25 = 5692
 
注意:并非所有編譯器都支持 C99 新增的這種格式!
 
 
4. 輸出浮點數(shù)
 
    格式限定符 %f 命令 printf 函數(shù)以十進制形式輸出 float 和 double 類型的浮點數(shù);%e 命令 printf 函數(shù)以指數(shù)形式輸出float 和 double 類型的浮點數(shù);%a%A 命令 printf 函數(shù)以 C99 新增的那種十六進制格式輸出,但是并非所有編譯器都支持。如果您要輸出 long double 類型的浮點數(shù),請用 %Lf, %Le%La,或者 %LA。例如:
 
/* showfloat.c – 用兩種形式表示浮點數(shù) */
 
#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 %e\n", var_f, var_f);
    printf("%f is equal to %e\n", var_df, var_df);
    printf("%Lf is equal to %Le\n", var_ld, var_ld);
 
    return 0;
}
 
輸出如下:
 
5.000000 is equal to 5.000000e+00
314.000000 is equal to 3.140000e+02
0.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 位的,而它使用函數(shù)庫中的 printf 函數(shù)卻把 long double 當(dāng)作 64 位的來處理。
 
 
5. 浮點數(shù)上溢(Overflow)和下溢(Underflow)
 
    假設(shè)您的編譯器中,float 最大只能達到 3.4e38,如果有以下語句:
 
float toobig = 3.4E38 * 100.0f;
printf("%e\n", toobig);
 
這必然導(dǎo)致上溢!因為 toobig 無法表示 3.4E38 和 100.0f 的乘積。上溢的后果過去是沒有定義的,不過現(xiàn)在 C 規(guī)定如果發(fā)生上溢,則產(chǎn)生一個表示無窮大的特殊值。因此,toobig 的值最終會變成一個表示無窮大的特殊值。進而,printf 函數(shù)會輸出類似 inf 或者 infinity 的字眼。
 
    對一個絕對值非常小的浮點數(shù)進行除法,并且導(dǎo)致這個浮點數(shù)的精度降低,稱之為下溢。打個比方,假設(shè) 3.1415e-10 除以 10 后,變成 0.3141e-10,這就是下溢。

相關(guān)文章

  • 詳解C++ 中的臨時對象

    詳解C++ 中的臨時對象

    這篇文章主要介紹了C++ 中的臨時對象的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C語言實現(xiàn)學(xué)生管理系統(tǒng)總結(jié)

    C語言實現(xiàn)學(xué)生管理系統(tǒng)總結(jié)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Qt實現(xiàn)文本編輯器(二)

    Qt實現(xiàn)文本編輯器(二)

    這篇文章主要介紹了利用Qt實現(xiàn)的一個文本編輯器。本文將具體講解下是如何實現(xiàn)菜單欄以及工具欄上對應(yīng)的需求,感興趣的可以動手試一試
    2022-01-01
  • C++基于OpenCV實現(xiàn)手勢識別的源碼

    C++基于OpenCV實現(xiàn)手勢識別的源碼

    這篇文章主要介紹了C++基于OpenCV手勢識別的實現(xiàn)源碼,這里用到背景減法模型知識,具體實例代碼跟隨小編一起看看吧
    2021-09-09
  • C語言菜鳥基礎(chǔ)教程之加法

    C語言菜鳥基礎(chǔ)教程之加法

    C語言中運算符和表達式數(shù)量之多, 在高級語言中是少見的。正是豐富的運算符和表達式使C語言功能十分完善。 這也是C語言的主要特點之一。今天我們來看看加法運算
    2017-10-10
  • c++中的volatile和variant關(guān)鍵字詳解

    c++中的volatile和variant關(guān)鍵字詳解

    大家好,本篇文章主要講的是c++中的volatile和variant關(guān)鍵字詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • C++設(shè)計模式編程中的觀察者模式使用示例

    C++設(shè)計模式編程中的觀察者模式使用示例

    這篇文章主要介紹了C++設(shè)計模式編程中的觀察者模式使用示例,觀察者模式在被觀察者和觀察者之間建立一個抽象的耦合,需要的朋友可以參考下
    2016-03-03
  • Windows窗口消息實例詳解

    Windows窗口消息實例詳解

    這篇文章主要介紹了Windows窗口消息,以實例形式詳細羅列了Windows窗口消息,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • QT使用QFile進行文件操作

    QT使用QFile進行文件操作

    本文主要介紹了QT使用QFile進行文件操作,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C語言實現(xiàn)大整數(shù)加減運算詳解

    C語言實現(xiàn)大整數(shù)加減運算詳解

    大數(shù)運算,顧名思義,就是很大的數(shù)值的數(shù)進行一系列的運算。本文通過實例演示如何進行C語言中的大整數(shù)加減運算,有需要的可以參考借鑒。
    2016-08-08

最新評論

湘潭县| 沧州市| 贡觉县| 承德县| 郓城县| 潢川县| 平舆县| 浦县| 会同县| 比如县| 理塘县| 通辽市| 景东| 田阳县| 铜鼓县| 门源| 盐津县| 余姚市| 阿荣旗| 凯里市| 湟中县| 凤庆县| 阿尔山市| 疏勒县| 鄂州市| 资源县| 教育| 邹城市| 太仆寺旗| 广南县| 阿瓦提县| 台湾省| 浮山县| 盱眙县| 广州市| 兴海县| 景德镇市| 静乐县| 潞城市| 顺昌县| 聊城市|