C語言自學《二》中篇 ---- 變量、類型、運算

##使用浮點數 浮點數包含的值帶小數點,也能夠表示分數和整數函數

下面是一些浮點數code

1.60.000087655.899100.0ci

用指數和C語言來表示字符串

1.6== 0.16E1 E表明10,1表明1次方編譯器

###定義浮點數變量it

<!-- lang: cpp -->

/*
    float類型佔用4字節,精確到6至7位小數,小數後面加f
    double類型佔用8字節,精確到15位小數
    long double類型佔用12字節,精確到18位小數,小數後面加L
*/
int main(){    
    float aa = 45.0f;
    float bb = 7.0f;
    printf("aa/b=%f\n",aa/bb);    //6.428571
    return 0;
}

###控制輸出中的小數位數io

<!-- lang: cpp -->

//%.2f中的.2說明控制小數位後面爲2位,設置成.0f表明後面沒有小數位數
printf("aa/bb=%.2f",aa/bb);    //6.42

###控制輸出的字段寬度編譯

<!-- lang: cpp -->

//輸出的字段寬度是輸出值所使用的總字符數(包括空格)
//指定寬度時,數值默認是右對齊,若是但願左對齊,只須要在%的後面添加一個負號
printf("aa/bb=%5.3f",aa/bb);

###運算的順序變量

<!-- lang: cpp -->

//它的計算順序是
//先計算最內層的括號,即5+4
//而後是先乘除後加減,即9*3,而後27+3
//最後2*30 = 60
2*(3+3*(5+4)) = 60

###利用輸入的直徑計算周長和麪積float

<!-- lang: cpp -->

int main(void){

    //設定初始值,以防因爲使用未賦值的變量引發垃圾值
    float radius = 0.0f;    //半徑
    float diameter = 0.0f;  //直徑
    float circumference = 0.0f; //周長
    float area = 0.0f;  //面積
    float Pi = 3.14159265f; //π

    printf("請輸入一個直徑數字:");

    //scanf()是另外一個須要包含頭文件stdio.h的函數
    //它專門處理鍵盤輸入,提取經過鍵盤輸入的數據,按照第一個參數指定的方式解釋它
    //第一個參數是放在雙引號內的一個控制字符串,爲float類型
    //scanf()將float類型的數存到變量diameter中
    //控制字符串是控制輸入,而不是輸出。
    scanf("%f",&diameter);  //&符號叫作尋址操做符,它容許讀入的數值存進變量diameter

    radius = diameter / 2.0f;
    circumference = 2.0 * Pi * radius;
    area = Pi * radius*radius;

    printf("\n周長爲:%.2f",circumference);    //寬度爲默認,小數位爲2位
    printf("\n面積爲:%.2f\n",area);
    return 0;
}

###讀取數據的格式說明符

  1. 讀取short類型的數值 ---- %hd
  2. 讀取int類型的數值 ---- %d
  3. 讀取long類型的數值 ---- %ld
  4. 讀取float類型的數值 ---- %f%e %e表明使用指數模式,好比32E-5
  5. 讀取double類型的數值 ---- %lf%le %lf表明雙精度浮點數 %f表明普通浮點數

###定義命名常量 例如像π的值就是一個不會改變的值,這種值就要設置成常量,使之在程序中保持不變,以避免帶來計算錯誤

第一種方法(將π定義爲一個符號)

<!-- lang: cpp -->

#define PI = 3.14159f;    //定義了一個常量,常量的命名一般全是大寫字母,與變量區分開

int main(){
    printf("π=%f",PI)
}

第二種方法(用const關鍵字修飾) π的值定義成變量,而且用const關鍵字修飾,固化變量,告訴編譯器,它的值是固定不變的

<!-- lang: cpp -->

const float Pi = 3.14159f;    //定義了Pi是一個float類型的常量值

###極限值

計算機中的數值老是受限於該機器能夠存儲的值域 對浮點數的極限值使用說明符%e,表示這個數值是指數形式 用%u輸出無符號整數值 若是用%d輸出無符號類型的最大值,則最左邊的爲(帶符號類型的符號位)爲1的數值就得不到正確的解釋

整數類型 頭文件<limits.h>中定義的符號表示每種類型的極限值,以下所示

  1. char
    • 上限:CHAR_MAX
    • 下限:CHAR_MIN
  2. short
    • 上限:SHRT_MAX
    • 下限:SHRT_MIN
  3. int
    • 上限:INT_MAX
    • 下限:INT_MIN
  4. long
    • 上限:LONG_MAX
    • 下限:LONG_MIN
  5. long long
    • 上限:LLONG_MAX
    • 下限:LLONG_MIN

如何應用

<!-- lang: cpp -->

 //無符號整數類型的下限都是0,因此他們沒有特定的符號
#include <limits.h>

int main(){

    //初始化一個int變量,這個語句把number設置爲最大值,編譯器會利用該最大值編譯代碼
    int number = INT_MAX;
    //打印整數類型的上限值和下限值
    printf("int MIN AND MIN is %d ~ %d\n",INT_MIN,INT_MAX);
    printf("long MIN AND MIN is %d ~ %d\n",LONG_MIN,LONG_MAX);
    printf("short MIN AND MIN is %d ~ %d\n",SHRT_MIN,SHRT_MAX);
    printf("long long MIN AND MIN is %d ~ %d\n",LLONG_MIN,LLONG_MAX);

    return 0;
}

小數類型 <float.h>頭文件定義了表示浮點數的符號

  1. float
    • 上限:FLT_MAX
    • 下限:FLT_MIN
  2. double
    • 上限:DBL_MAX
    • 下限:DBL_MIN
  3. long double
    • 上限:LDBL_MAX
    • 下限:LDBL_MIN

######sizeof運算符

<!-- lang: cpp -->

/*
    sizeof運算符能夠肯定給定的類型佔據多少字節
    例如表達式sizeof(int)會獲得int類型的變量所佔的字節數
    所得的值是一個size_t類型的整數,對應一個基本整數類型
    size_t類型在標準頭文件<stddef.h>和其餘頭文件中定義
    可是因爲不一樣的C庫中有所不一樣,因此最好使用size_t變量存儲sizeof運算符生成的值
    例如size_t size = sizeof(long long);
*/
int main(void){
    
    //由於sizeof運算符的結果是一個無符號整數,因此用%u說明符輸出它
    printf("Variables of type char occupy %u bytes\n",sizeof(char));
    printf("Variables of type short occupy %u bytes\n",sizeof(short));
    printf("Variables of type int occupy %u bytes\n",sizeof(int));
    printf("Variables of type long occupy %u bytes\n",sizeof(long));
    printf("Variables of type long long occupy %u bytes\n",sizeof(long long));
    printf("Variables of type double occupy %u bytes\n",sizeof(double));
    printf("Variables of type float occupy %u bytes\n",sizeof(float));
    printf("Variables of type long double occupy %u bytes\n",sizeof(long double));
    return 0;
}
相關文章
相關標籤/搜索