• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • C語言入門之數據類型(4)

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    C語言入門之數據類型(4): 字符串常量 字符串常量是由一對雙引號括起的字符序列。例如: "CHINA" ,"C program: , "$12.5" 等都是合法的字符串常量。字符串常量和字符常量是不同的量。它們之間主要有以下區別: 1.字符常量由單引號括起來,字符串常量由雙引
    C語言入門之數據類型(4):

      字符串常量

       字符串常量是由一對雙引號括起的字符序列。例如: "CHINA" ,"C program: , "$12.5" 等都是合法的字符串常量。字符串常量和字符常量是不同的量。它們之間主要有以下區別:

       1.字符常量由單引號括起來,字符串常量由雙引號括起來。

       2.字符常量只能是單個字符,字符串常量則可以含一個或多個字符。

       3.可以把一個字符常量賦予一個字符變量,但不能把一個字符串常量賦予一個字符變量。在C語言中沒有相應的字符串變量。

       這是與BASIC 語言不同的。但是可以用一個字符數組來存放一個字符串常量。在數組一章內予以介紹。
    4.字符常量占一個字節的內存空間。字符串常量占的內存字節數等于字符串中字節數加1。增加的一個字節中存放字符"\0"(ASCII碼為0)。這是字符串結束的標志。例如,字符串 "C program"在內存中所占的字節為:C program\0。字符常量'a'和字符串常量"a"雖然都只有一個字符,但在內存中的情況是不同的。

       'a'在內存中占一個字節,可表示為:a
       "a"在內存中占二個字節,可表示為:a\0符號常量

       符號常量

       在C語言中,可以用一個標識符來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,其一般形式為:

    #define 標識符 常量

       其中#define也是一條預處理命令(預處理命令都?quot;#"開頭),稱為宏定義命令(在第九章預處理程序中將進一步介紹),其功能是把該標識符定義為其后的常量值。一經定義,以后在程序中所有出現該標識符的地方均代之以該常量值。習慣上符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區別。

    #define PI 3.14159
    void main(){
      float s,r;
      r=5;
      s=PI*r*r;
      printf("s=%f\n",s);
    }


       由宏定義命令定義PI 為3.14159 s,r定義為實數 5->r PI*r*r->s

       顯示程序結果 float s,r; r=5; s=PI*r*r; 本程序在主函數之前由宏定義命令定義PI 為3.14159,在程序中即以該值代替PI 。s=PI*r*r等效于s=3.14159*r*r。應該注意的是,符號常量不是變量,它所代表的值在整個作用域內不能再改變。也就是說,在程序中,不能再用賦值語句對它重新賦值。

       變量的初值和類型轉換

       變量賦初值

       在程序中常常需要對變量賦初值,以便使用變量。語言程序中可有多種方法,在定義時賦以初值的方法,這種方法稱為初始化。在變量說明中賦初值的一般形式為:

       類型說明符 變量1= 值1,變量2= 值2,……; 例如:

    int a=b=c=5;
    float x=3.2,y=3f,z=0.75;
    char ch1='K',ch2='P';

       應注意,在說明中不允許連續賦值,如a=b=c=5是不合法的。

    void main(){
    int a=3,b,c=5;
    b=a+c;
    printf("a=%d,b=%d,c=%d\n",a,b,c);
    }
    a<---3,b<--0,c<---5
    b<--a+c



       顯示程序運行結果

       變量類型的轉換

       變量的數據類型是可以轉換的。轉換的方法有兩種, 一種是自動轉換,一種是強制轉換。

       自動轉換

       自動轉換發生在不同數據類型的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則:

       1.若參與運算量的類型不同,則先轉換成同一類型,然后進行運算。

       2.轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型后再進行運算。

       3.所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉換成double型,再作運算。

       4.char型和short型參與運算時,必須先轉換成int型。

       5.在賦值運算中,賦值號兩邊量的數據類型不同時, 賦值號右邊量的類型將轉換為左邊量的類型。 如果右邊量的數據類型長度左邊長時,將丟失一部分數據,這樣會降低精度, 丟失的部分按四舍五入向前舍入。下面程序段表示了類型自動轉換的規則。

    void main(){
    float PI=3.14159;
    int s,r=5;
    s=r*r*PI;
    printf("s=%d\n",s);
    } PI<--3.14159
    s<--0,r<--5
    s<--r*r*PI


       顯示程序運行結果:

    float PI=3.14159;
    int s,r=5;
    s=r*r*PI;



       本例程序中,PI為實型;s,r為整型。在執行s=r*r*PI語句時,r和PI都轉換成double型計算,結果也為double型。但由于s為整型,故賦值結果仍為整型,舍去了小數部分。

       強制類型轉換

       強制類型轉換是通過類型轉換運算來實現的。其一般形式為: (類型說明符) (表達式) 其功能是把表達式的運算結果強制轉換成類型說明符所表示的類型。例如: (float) a 把a轉換為實型(int)(x+y) 把x+y的結果轉換為整型在使用強制轉換時應注意以下問題:

       1.類型說明符和表達式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之后再與y相加了。

       2.無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變量的數據長度進行的臨時性轉換,而不改變數據說明時對該變量定義的類型。

    main(){
    float f=5.75;
    printf("(int)f=%d,f=%f\n",(int)f,f);
    }
    f<--5.75


       將float f強制轉換成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f,f); 本例表明,f雖強制轉為int型,但只在運算中起作用, 是臨時的,而f本身的類型并不改變。因此,(int)f的值為 5(刪去了小數)而f的值仍為5.75。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>