亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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。
 
    當然,我們也可以指定浮點型常量的類型。在浮點型常量后面添上 f 或者 F,編譯器就會用 float 類型來處理這個常量。例如:1.5f,2.1e6F。在后面添上 l 或者 L 的話,編譯器會用 long double 類型來處理這個常量。例如:4.1l50.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 當作 64 位的來處理。
 
 
5. 浮點數(shù)上溢(Overflow)和下溢(Underflow)
 
    假設(shè)您的編譯器中,float 最大只能達到 3.4e38,如果有以下語句:
 
float toobig = 3.4E38 * 100.0f;
printf("%e\n", toobig);
 
這必然導致上溢!因為 toobig 無法表示 3.4E38 和 100.0f 的乘積。上溢的后果過去是沒有定義的,不過現(xiàn)在 C 規(guī)定如果發(fā)生上溢,則產(chǎn)生一個表示無窮大的特殊值。因此,toobig 的值最終會變成一個表示無窮大的特殊值。進而,printf 函數(shù)會輸出類似 inf 或者 infinity 的字眼。
 
    對一個絕對值非常小的浮點數(shù)進行除法,并且導致這個浮點數(shù)的精度降低,稱之為下溢。打個比方,假設(shè) 3.1415e-10 除以 10 后,變成 0.3141e-10,這就是下溢。

相關(guān)文章

  • C++基礎(chǔ)之this指針與另一種“多態(tài)”

    C++基礎(chǔ)之this指針與另一種“多態(tài)”

    this指針識別了同一個類的不同的對象,換句話說,this指針使得成員函數(shù)可以訪問同一個類的不同對象。再深入一點,this指針使得成員函數(shù)會因為this指針的不同而訪問到了不同的成員變量
    2013-07-07
  • C++實現(xiàn)貪吃蛇游戲

    C++實現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++利用eigen庫實現(xiàn)求歐拉角

    C++利用eigen庫實現(xiàn)求歐拉角

    這篇文章主要為大家詳細介紹了C++如何利用eigen庫自帶的matrix.eulerAngles()函數(shù)實現(xiàn)求歐拉角,文中的示例代碼講解詳細,有需要的小伙伴可以參考下
    2023-11-11
  • C++使用ifstream讀取文件內(nèi)容的示例詳解

    C++使用ifstream讀取文件內(nèi)容的示例詳解

    這篇文章主要為大家詳細介紹了C++如何使用ifstream讀取文件內(nèi)容的功能,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的可以了解一下
    2023-03-03
  • c++通過引用實現(xiàn)三個數(shù)字求最大值

    c++通過引用實現(xiàn)三個數(shù)字求最大值

    下面我們將通過這個例子來說明引用的作為函數(shù)參數(shù)的使用方法。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • 可讀可執(zhí)行的C語言簡歷源文件

    可讀可執(zhí)行的C語言簡歷源文件

    這篇文章主要為大家家詳細介紹了可讀可執(zhí)行的C語言簡歷源文件,感興趣的小伙伴們可以參考一下
    2016-07-07
  • C語言實現(xiàn)牛頓迭代法解方程詳解

    C語言實現(xiàn)牛頓迭代法解方程詳解

    這篇文章主要介紹了C語言實現(xiàn)牛頓迭代法解方程詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • C語言實現(xiàn)英文文本詞頻統(tǒng)計

    C語言實現(xiàn)英文文本詞頻統(tǒng)計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)英文文本詞頻統(tǒng)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Qt實現(xiàn)對齊線功能的示例代碼

    Qt實現(xiàn)對齊線功能的示例代碼

    這篇文章主要介紹了Qt如何實現(xiàn)對齊線功能,并且可以添加任意數(shù)量和自動吸附,文中示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-06-06
  • QT5交叉編譯入門級教程(arm64、mips64)

    QT5交叉編譯入門級教程(arm64、mips64)

    交叉編譯就是在當前系統(tǒng)平臺上,開發(fā)編譯運行于其它平臺的程序,比如本文硬件環(huán)境是x86平臺,但是編譯出來的程序是在arm64架構(gòu)、mips64等架構(gòu)上運行,本文給大家分享QT5交叉編譯入門級教程(arm64、mips64),感興趣的朋友一起看看吧
    2023-11-11

最新評論