當前位置:首頁 » 編程語言 » 最基本的c語言

最基本的c語言

發布時間: 2023-04-28 15:36:40

『壹』 學習c語言需要掌握哪些基本知識

1.入門程序

#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}

2.數據類型

數據類型:

1.基本數據類型:

1.1. 整型:int 4個位元組

1.2. 字元型:char 1個位元組

1.3. 實型(浮點型)

  • 1.3.1.單精度型:float 4個位元組

  • 1.3.2.雙精度型:double 8個位元組

  • 2.構造類型:

    2.1.枚舉類型

    2.2.數組類型

    2.3.結構體類型

    2.4.共用體類型

    3.指針類型:

    4.空類型:

    3.格式化輸出語句

  • %d:十進制整數;

  • %c:單個字元;

  • %s:字元串;

  • %f:6位小數;

  • #include <stdio.h>

  • int main()

  • {

  • int age = 18;

  • float height = 1.85;

  • char unit = 'm';

  • printf("小明今年%d歲 ", age);

  • printf("小明身高%f%c ", height, unit);

  • printf("小明現在在慕課網上學習IT技術 ");

  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    4.常量

    值不發生改變的量成為常量;

    定義字元常量(注意後面沒有;)

  • #include <stdio.h>

  • #define POCKETMONEY 10 //定義常量及常量值

  • int main()

  • {

  • printf("小明今天又得到%d元零花錢 ", POCKETMONEY);

  • return 0;

  • }

  • 5.運算符

    5.1.算數運算符:+,-,*,/,%,++,--;前++/--,先運算,再取值.後++/--,先取值,再運算;

    5.2.賦值運算符:

    5.3.關系運算符;

    5.4.邏輯運算符;

    5.5.三目運算符:

  • 表達式1 ? 表達式2 : 表達式3;

  • 6.水仙花數計算

    輸出所有三位數的水仙花數字

    所謂「水仙花數」是指一個三位數,其各位數字立方和等於該數,如:153就是一個水仙花數,153=111+555+333。

  • #include <stdio.h>


  • int main()

  • {

  • //定義三位數num,個位數sd,十位數td,百位數hd

  • int num, sd, td, hd;

  • //循環所有三位數

  • for( num=100 ; num<1000 ; num++ )

  • {

  • //獲取三位數字num百位上的數字

  • hd = num/100 ;

  • //獲取三位數字num十位上的數字

  • td = num/10%10 ;

  • //獲取三位數字num個位上的數字

  • sd = num%10 ;

  • //水仙花數的條件是什麼?

  • if(num ==hd*hd*hd+td*td*td+sd*sd*sd )

  • {

  • printf("水仙花數字:%d ", num);

  • }

  • }

  • return 0;

  • }

  • 7.列印正三角形的*

  • #include <stdio.h>

  • int main()

  • {

  • int i, j, k;

  • for(i=1; i<5; i++)

  • {

  • /* 觀察每行的空格數量,補全循環條件 */

  • for( j=i ; j<5 ; j++ )

  • {

  • printf(" "); //輸出空格

  • }

  • /* 觀察每行*號的數量,補全循環條件 */

  • for( k=0 ; k<2*i-1 ; k++ )

  • {

  • printf("*"); //每行輸出的*號

  • }

  • printf(" "); //每次循環換行

  • }

  • return 0;

  • }

  • 8.臭名遠揚的goto語句

    很少使用

  • #include <stdio.h>

  • int main()

  • {

  • int sum = 0;

  • int i;

  • for(i=1; i<=10; i++)

  • {

  • printf("%d ", i);

  • if(i==3){

  • goto LOOP;//滿足條件就執行goto語句

  • }

  • }

  • //執行goto

  • LOOP:printf("結束for循環了...."); //請選擇合適位置添加標識符

  • return 0;

  • }

  • 9.形參與實參

    形參:形參是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳入的參數;

    實參:實參是在調用時傳遞該函數的參數。

    函數的形參和實參具有以下特點:

  • 形參只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。

  • 實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值等辦法使實參獲得確定值。

  • 在參數傳遞時,實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。

  • 10.函數返回值注意

    注意:void函數中可以有執行代碼塊,但是不能有返回值,另void函數中如果有return語句,該語句只能起到結束函數運行的功能。其格式為:return;

    11.遞歸

  • #include <stdio.h>


  • int getPeachNumber(int n) //這里要定義n,要不編譯器會報錯!

  • {

  • int num;

  • if(n==10)

  • {

  • return 1;

  • }

  • else

  • {

  • num = (getPeachNumber(n+1)+1)*2;

  • printf("第%d天所剩桃子%d個 ", n, num);

  • }

  • return num;

  • }

  • int main()

  • {

  • int num = getPeachNumber(1);

  • printf("猴子第一天摘了:%d個桃子。 ", num);

  • return 0;

  • }

  • 12.變數存儲類別 !

    12.1.生存周期劃分存儲方式

    C語言根據變數的生存周期來劃分,可以分為靜態存儲方式和動態存儲方式。

    靜態存儲方式:是指在程序運行期間分配固定的存儲空間的方式。靜態存儲區中存放了在整個程序執行過程中都存在的變數,如全局變數。

    動態存儲方式:是指在程序運行期間根據需要進行動態的分配存儲空間的方式。動態存儲區中存放的變數是根據程序運行的需要而建立和釋放的,通常包括:函數形式參數;自動變數;函數調用時的現場保護和返回地址等。

    12.2.存儲類型劃分

    C語言中存儲類別又分為四類:自動(auto)、靜態(static)、寄存器的(register)和外部的(extern) ;

  • 用關鍵字auto定義的變數為自動變數,auto可以省略,auto不寫則隱含定為「自動存儲類別」,屬於動態存儲方式。

  • 用static修飾的為靜態變數,如果定義在函數內部的,稱之為靜態局部變數;如果定義在函數外部,稱之為靜態外部變數。

  • 注意:靜態局部變數屬於靜態存儲類別,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放;靜態局部變數在編譯時賦初值,即只賦初值一次;如果在定義局部變數時不賦初值的話,則對靜態局部變數來說,編譯時自動賦初值0(對數值型變數)或空字元(對字元變數)

  • 為了提高效率,C語言允許將局部變數的值放在CPU中的寄存器中,這種變數叫「寄存器變數」,用關鍵字register作聲明。

  • 注意:只有局部自動變數和形式參數可以作為寄存器變數;一個計算機系統中的寄存器數目有限,不能定義任意多個寄存器變數;局部靜態變數不能定義為寄存器變數。

  • 用extern聲明的的變數是外部變數,外部變數的意義是某函數可以調用在該函數之後定義的變數。

  • #includ <stdio.h>

  • //來源公眾號:C語言與CPP編程

  • int main()

  • {

  • //定義外部局部變數

  • extern int x;

  • return 0;

  • }

  • int x=100;

  • 13.內部函數外部函數 !

    在C語言中不能被其他源文件調用的函數稱為內部函數 ,內部函數由static關鍵字來定義,因此又被稱為靜態函數,形式為:

    static [數據類型] 函數名([參數])

    這里的static是對函數的作用范圍的一個限定,限定該函數只能在其所處的源文件中使用,因此在不同文件中出現相同的函數名稱的內部函數是沒有問題的。

    在C語言中能被其他源文件調用的函數稱為外部函數 ,外部函數由extern關鍵字來定義,形式為:

    extern [數據類型] 函數名([參數])

    C語言規定,在沒有指定函數的作用范圍時,系統會默認認為是外部函數,因此當需要定義外部函數時extern也可以省略。 extern可以省略; 14.數組 數組:一塊連續的,大小固定並且裡面的數據類型一致的內存空間, 數組的聲明:數據類型 數組名稱[長度n]

  • 數據類型 數組名稱[長度n] = {元素1,元素2,元素3,......};

  • 數據類型 數組名稱[] = {元素1,元素2,元素3,......};

  • 數類類型 數組名稱[長度n]; 數組名稱[0] = 元素1;數組名稱[1] = 元素2;...... 注意: 1、數組的下標均以0開始; 2、數組在初始化的時候,數組內元素的個數不能大於聲明的數組長度; 3、如果採用第一種初始化方式,元素個數小於數組的長度時,多餘的數組元素初始化為0; 4、在聲明數組後沒有進行初始化的時候,靜態(static)和外部(extern)類型的數組元素初始化元素為0,自動(auto)類型的數組的元素初始化值不確定。

  • 15.數組遍歷

  • #include <stdio.h>


  • int main()

  • {

  • int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

  • int i;

  • for(i=0;i<10;i++)

  • {

  • printf("%d ",arr[i]);

  • }

  • return 0;

  • }

  • 數組的冒泡排序

  • 冒泡排序的思想:相鄰元素兩兩比較,將較大的數字放在後面,直到將所有數字全部排序。

  • 字元串與數組

  • 在C語言中,是沒有辦法直接定義子字元串數據類型的,需使用數組來定義所要的字元串,形式如下:

  • char 字元串名稱[長度] = "字元串內容";

  • char 字元串名稱[長度] = {'字元串1','字元串2',....,'字元串n',''};

  • 注:

  • []中的長度可以省略不寫;

  • 採用第二種方式最後一個元素必須是'',表示結束;

  • 第二種方式不能寫中文!; 輸出字元串時,要使用:printf("%s",字元數組名);或puts(字元數組名);

  • 16.字元串函數

  • strlen(s):獲取字元串s的長度;

  • strcmp(s1,s2):比較字元串;比較的時候會把字元串轉換成ASCII碼再進行比較,返回結果為0表示s1和s2的ASCII碼值相等,返回結果為1表示s1比s2的ASCII碼大,返回結果為-1表示s1比s2的ACSII碼小;

  • strcpy(s1,s2):字元串拷貝;s2會取代s1中的內容;

  • strcat(s1,s2)將s2拼接到s1後面;注意:s1的length要足夠才可以!

  • atoi(s1)將字元串轉為整數!

  • 17.多維數組

    數據類型 數組名稱[常量表達式1]...[常量表達式n];

    多維數組的初始化與一維數組的初始化類似也是分兩種:

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n]; 數組名稱[下標1][下標2]...[下標n] = 值;

  • 多維數組初始化要注意以下事項:

  • 採用第一種始化時數組聲明必須指定列的維數。因為系統會根據數組中元素的總個數來分配空間,當知道元素總個數以及列的維數後,會直接計算出行的維數;

  • 採用第二種初始化時數組聲明必須同時指定行和列的維數。

  • 18.多維度數組的遍歷

    使用嵌套循環

    注意:多維數組的每一維下標均不能越界!

    19.結構體

    C 數組允許定義可存儲相同類型數據項的變數,結構是 C 編程中另一種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項。

    結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性:

  • Title

  • Author

  • Subject

  • Book ID

  • 定義結構

    為了定義結構,您必須使用 struct 語句。struct 語句定義了一個包含多個成員的新的數據類型,struct 語句的格式如下:

  • struct tag {

  • member-list

  • member-list

  • member-list

  • ...

  • } variable-list ;

  • tag 是結構體標簽。

    member-list 是標準的變數定義,比如 int i; 或者 float f,或者其他有效的變數定義。

    variable-list 結構變數,定義在結構的末尾,最後一個分號之前,您可以指定一個或多個結構變數。下面是聲明 Book 結構的方式:

  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • } book;

  • 在一般情況下,tag、member-list、variable-list 這 3 部分至少要出現 2 個。以下為實例:

  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //同時又聲明了結構體變數s1

  • //這個結構體並沒有標明其標簽

  • struct

  • {

  • int a;

  • char b;

  • double c;

  • } s1;


  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //結構體的標簽被命名為SIMPLE,沒有聲明變數

  • struct SIMPLE

  • {

  • int a;

  • char b;

  • double c;

  • };

  • //用SIMPLE標簽的結構體,另外聲明了變數t1、t2、t3

  • struct SIMPLE t1, t2[20], *t3;


  • //也可以用typedef創建新類型

  • typedef struct

  • {

  • int a;

  • char b;

  • double c;

  • } Simple2;

  • //現在可以用Simple2作為類型聲明新的結構體變數

  • Simple2 u1, u2[20], *u3;

  • 訪問結構成員

    為了訪問結構的成員,我們使用成員訪問運算符(.)。成員訪問運算符是結構變數名稱和我們要訪問的結構成員之間的一個句號。您可以使用 struct 關鍵字來定義結構類型的變數。下面的實例演示了結構的用法:

  • #include <stdio.h>

  • #include <string.h>

  • //來源公眾號:C語言與CPP編程


  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • };


  • int main( )

  • {

  • struct Books Book1; /* 聲明 Book1,類型為 Books */

  • struct Books Book2; /* 聲明 Book2,類型為 Books */


  • /* Book1 詳述 */

  • strcpy( Book1.title, "C Programming");

  • strcpy( Book1.author, "Nuha Ali");

  • strcpy( Book1.subject, "C Programming Tutorial");

  • Book1.book_id = 6495407;


  • /* Book2 詳述 */

  • strcpy( Book2.title, "Telecom Billing");

  • strcpy( Book2.author, "Zara Ali");

  • strcpy( Book2.subject, "Telecom Billing Tutorial");

  • Book2.book_id = 6495700;


  • /* 輸出 Book1 信息 */

  • printf( "Book 1 title : %s ", Book1.title);

  • printf( "Book 1 author : %s ", Book1.author);

  • printf( "Book 1 subject : %s ", Book1.subject);

  • printf( "Book 1 book_id : %d ", Book1.book_id);


  • /* 輸出 Book2 信息 */

  • printf( "Book 2 title : %s ", Book2.title);

  • printf( "Book 2 author : %s ", Book2.author);

  • printf( "Book 2 subject : %s ", Book2.subject);

  • printf( "Book 2 book_id : %d ", Book2.book_id);


  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    20.共用體

    共用體是一種特殊的數據類型,允許您在相同的內存位置存儲不同的數據類型。您可以定義一個帶有多成員的共用體,但是任何時候只能有一個成員帶有值。共用體提供了一種使用相同的內存位置的有效方式。

  • #include <stdio.h>

  • #include <string.h>


  • union Data

  • {

  • int i;

  • float f;

  • char str[20];

  • };


  • int main( )

  • {

  • union Data data;


  • printf( "Memory size occupied by data : %d ", sizeof(data));


  • return 0;

  • }

  • 21.指針

  • #include <stdio.h>


  • int main ()

  • {

  • int var = 20; /* 實際變數的聲明 */

  • int *ip; /* 指針變數的聲明 */


  • ip = &var; /* 在指針變數中存儲 var 的地址 */


  • printf("Address of var variable: %p ", &var );


  • /* 在指針變數中存儲的地址 */

  • printf("Address stored in ip variable: %p ", ip );


  • /* 使用指針訪問值 */

  • printf("Value of *ip variable: %d ", *ip );


  • return 0;

  • }

  • 22.文件讀寫

    寫入文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;


  • fp = fopen("/tmp/test.txt", "w+");

  • fprintf(fp, "This is testing for fprintf... ");

  • fputs("This is testing for fputs... ", fp);

  • fclose(fp);

  • }

  • 讀取文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;

  • char buff[255];


  • fp = fopen("/tmp/test.txt", "r");

  • fscanf(fp, "%s", buff);

  • printf("1: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("2: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("3: %s ", buff );

  • fclose(fp);


  • }

  • C語言與C++學習路線

    23.排序演算法

    十大經典排序演算法(動態演示+代碼)

    24.查找演算法

    九種查找演算法

    25.面試知識

    C語言與C++面試知識總結

    26.字元串操作

    字元串操作的全面總結

    27.C語言常用標准庫解讀

    C語言常用標准庫解讀

    28. C語言最常用的貪心演算法

    C語言最常用的貪心演算法就這么被攻克了

    29. 常見的C語言內存錯誤及對策

    常見的C語言內存錯誤及對策

    30. C語言實現面向對象的原理

    C語言實現面向對象的原理

    31. C語言/C++內存管理

    看完這篇你還能不懂C語言/C++內存管理?

    32. 再談C語言指針

    再談指針:大佬給你撥開 C 指針的雲霧

    C語言函數指針之回調函數

    C語言指針詳解(文末有福利)

    33. C語言預處理命令

    長文詳解:C語言預處理命令

    34. C語言高效編程與代碼優化

    C語言高效編程與代碼優化

    35. C語言結構體

    C語言之結構體就這樣被攻克了!值得收藏!

    36. 原碼, 反碼, 補碼 詳解

    原碼, 反碼, 補碼 詳解

    37. C語言宏定義

    簡述C語言宏定義的使用

    38. c語言之共用體union、枚舉、大小端模式

    c語言之共用體union、枚舉、大小端模式

『貳』 C語言基礎知識

  •1 C語言程序的結構認識

用一個簡單的c程序例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使讀者對c語言有個初步認識。

例1 計算兩個整數之和的c程序:

1、任何一個c語言程序都必須包括以下格式:

這是c語言的基本結構,任何一個程序都必須包含這個機構。括弧內可以不寫任何內容,那麼該程序將不執行任何結果。

2、main()----在c語言中稱之為「主函數」,一個c程序有且僅有一個main函數,任何一個c程序總是從main函數開始執行,main函數後面的一對圓括弧不能省略。

3、被大括弧{ }括起來的內容稱為main函數的函數體,這部分內容就是計算機要執行的內容。

4、在{  }裡面每一句話後面都有一個分號(;),在c語言中,我們把以一個分號結尾的一句話叫做一個c語言的語句,分號是語句結束的標志。

5、printf(「a=%d,b=%d,sum=%d\n」,a,b,sum); ----通過執行這條c語言系統提供給我們直接使用的屏幕輸出函數,用戶即可看到運行結果,本程序運行後,將在顯示器上顯示如下結果:

6、#include

7、程序中以 /*開頭並且以*/結尾的部分表示程序的注釋部分,注釋可以添加在程序的任何位置,為了提高程序的可讀性而添加,但計算機在執行主函數內容時完全忽略注釋部分,換而言之就是計算機當做注釋部分不存在於主函數中。

   •  2 C程序的生成過程

C程序是先由源文件經編譯生成目標文件,然後經過連接生成可執行文件,如圖所示。

                              編譯過程

 • 3 標識符

在編寫程序時,必須為函數、變數等命名,這個名字稱為標識符。C語言中標識符的命名規則如下:

標識符不能與程序中具有特殊意義的關鍵字相同,不能與用戶編制的函數名、C語言庫函數相同,在程序中各種標識符盡量不要重復,以便區分。選擇變數名和其他標識符時,應注意做到 「見名知義」。

標識符分為如下三類:

1、關鍵字

3、用戶標識符

用戶根據需要自己定義的標識符稱為用戶標識符。無論如何自定義標識符,都必須符合標識符的三條命名規則。

 • 4 常量

在程序運行中,其值不能被改變的量稱為常量。常量有5種類型:整型常量、實型常量、字元常量、字元串常量和符號常量。

(一)數值轉換

數字的四種表現形式:

在計算機內部,數字均以二進制形式表示和存放,用戶輸入的普通十進制數字都要被計算機轉換成二進制才能在計算機內部存儲,同樣計算機的運算結果也為二進制,一般要將其轉換成十進制數再輸出給用戶閱讀,這種轉換通常由計算機自動實現。

(1)將十進制轉換二進制、八進制和十六進制

除法:將十進制數除以2,記錄余數,得到的商繼續除以2,直到商為0,然後將各次相處所得的余數從後往前逆序排列,所得余數數字序列就是該十進制數對應的二進制數。八進制和十六進制轉換方法同上。

例:十進制數13轉換成二進制數的值為1101,轉換八進制為015,轉換成十六進制為D.

(2)將二進制、八進制和十六進制轉換成十進制

乘積求和:將二進制的每一位從低位到高位(右邊為低位,左邊為高位)分別乘以20,21,22。。。。,然後將這些積求和。

例如:(1101)2=(13)10     (317)8=(207)10     (23E)16=(574)10

(3)二進制與八進制、十六進制數之間的相互轉換

(二)整型常量

整型常量有3種形式:十進制整型常量、八進制整型常量和十六進制整型常量。

書寫方式如下:

(三)實型常量

實型常量有兩種表示形式:小數形式和指數形式。

(四)字元常量

(2)由一對單引號括起來,以反斜杠\開頭,後跟若干數字或者字母,比如『\n』,其中「\「是轉義的意思,後面跟不同的字元表示不同的意思,這類字元常量叫轉義字元。具體如圖所示 。

(五)字元串常量

C語言中,以雙引號括起來的,由若干個字元組成的序列即為字元串常量。

例:「ni hao」   「happy」等等。

(六)符號常量

例:計算圓的面積的c程序。

說明:

• 5 變數

變數就是其值可以改變的量。變數要有變數名,在內存中占據一定的存儲單元,存儲單元里存放的是該變數的值。不同類型的變數其存儲單元的大小不同,變數在使用前必須定義。

(一)整型變數

不同的編譯系統對上述四種整型數據所佔用的位數和數值范圍有不同的規定。

類型說明符

說明:

(二)實型變數

C語言中,實型變數分為單精度類型( float )和雙精度類型( double )兩種。如:

在vc中,float 型數據在內存中佔4個位元組(32位),double型數據佔8個位元組。單精度實數提供7位有效數字,雙精度實數提供15~16位有效數字。實型常量不分float型和double型,一個實型常量可以賦給一個float 型或double型變數,但變數根據其類型截取實型常量中相應的有效數字。

注意:實型變數只能存放實型值,不能用整型變數存放實型值,也不能用實型變數存放整型值。

(三)字元變數

字元變數用來存放字元常量,定義形式:

char  變數名;

其中關鍵字char定義字元型數據類型,佔用一個位元組的存儲單元。

將一個字元賦給一個字元變數時,並不是將該字元本身存儲到內存中,而是將該字元對應的ASCII碼存儲到內存單元中。例如,字元 ′A′ 的ASCII碼為65,在內存中的存放形式如下:01000001

由於在內存中字元以ASCII碼存放,它的存儲形式和整數的存儲形式類似,所以C語言中字元型數據與整型數據之間可以通用,一個字元能用字元的形式輸出,也能用整數的形式輸出,字元數據也能進行算術運算,此時相當於對它們的ASCII碼進行運算。

     •6 類型的自動轉換和強制轉換

當同一表達式中各數據的類型不同時,編譯程序會自動把它們轉變成同一類型後再進行計算。轉換優先順序為:

即左邊級別「低「的類型向右邊轉換。具體地說,若在表達式中優先順序最高的數據是double型,則此表達式中的其他數據均被轉換成double型,且計算結果也是double型;若在表達式中優先順序最高的數據是float型,則此表達式中的其他數據均被轉換成float型,且計算結果也是float型。

在做賦值運算時,若賦值號左右兩邊的類型不同,則賦值號右邊的類型向左邊的類型轉換;當右邊的類型高於左邊的類型時,則在轉換時對右邊的數據進行截取。

除自動轉換外,還有強制轉換,表示形式是:

討論:當a值賦值為3.4,b值賦值為2.7,(int)(a+b)和(int)a+b的值分別為多少?

   • 7  C運算符認識

C語言的運算符范圍很廣,可分為以下幾類:

1、算術運算符:用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(%)、自增(++)、自減(--)共七種。

2、賦值運算符:用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。

3、逗號運算符:用於把若干表達式組合成一個表達式(,)。

4、關系運算符:用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。

5、邏輯運算符:用於邏輯運算。包括與(&&)、或(||)、非(!)三種。

6、條件運算符:這是一個三目運算符,用於條件求值(?:)。

7、位操作運算符:參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

8、指針運算符:用於取內容(*)和取地址(&)二種運算。

9.、求位元組數運算符:用於計算數據類型所佔的位元組數(sizeof)。

10、特殊運算符:有括弧(),下標[],成員(→,.)等幾種。

另外,按參與運算的對象個數,C語言運算符可分為:單目運算符 (如 !)、雙目運算符 (如+,- )和三目運算符 (如 ?  : )。

一、   基本的算術運算符

(1)+(加法運算符或正值運算符,如2+5)。

(2)-(減法運算符或負值運算符,如4-2)。

(3)*(乘法運算符,如3*8)。

(4)/(除法運算符,如11/5)。

/的運算分為兩種情況:

(5)%(模運算符或稱求余運算符,%兩側均應為整型數據,如9%7的值為2)。

需要說明的是:當運算對象為負數時,所得結果隨編譯器不同而不同,在vc中,結果的符號與被除數相同,比如:13%-2值為1,而-15%2值為-1.

二、   算術表達式和運算符的優先順序與結合性

算術表達式是用算術運算符和括弧將運算量(也稱操作數)連接起來的、符合C語言語法規則的表達式。運算對象包括函數、常量和變數等。

在計算機語言中,算術表達式的求值規律與數學中的四則運算的規律類似,其運算規則和要求如下。

(1)在算術表達式中,可使用多層圓括弧,但括弧必須配對。運算時從內層圓括弧開始,由內向外依次計算各表達式的值。

(2)在算術表達式中,對於不同優先順序的運算符,可按運算符的優先順序由高到低進行運算,若表達式中運算符的優先順序相同,則按運算符的結合方向進行運算。

(3)如果一個運算符兩側的操作數類型不同,則先利用自動轉換或強制類型轉換,使兩者具有相同類型,然後進行運算。

三、   自增自減運算符

作用:使變數的值增1或減1。

(1)只有變數才能用自增運算符 (++)和自減運算符(--),而常量或表達式不能用,如10++或(x+y)++都是不合法的。

(2)++和--的結合方向是「自右向左「,如 -i++ ,i的左邊是負號運算符,右邊是自增運算符,負號運算和自增運算都是 「自右向左「結合的,相當於 -(i++)。

在循環語句中常用到自增(減)運算符,在指針中也常用到該運算符,考生要弄清楚「i++」和「++i」及「i--」和「--i」的區別,特別弄清楚表達式的值和變數的值。

例:變數n的初始值為2,則

例:有以下程序

程序運行後的輸出結果是_____

A.12  35  13  35  14  36     B. 12  35  14  35  14  36

C.12  35  14  36  14  36     D. 12  35  14  35  14  35

解析:自增自減運算需要注意區分表達式的值和變數的值,表達式運算後,變數會自增自減運算,表達式和變數變化如下:

     •9 賦值運算符與賦值表達式

一、賦值運算符與賦值表達式

賦值符號 「=「就是賦值運算符,作用是將一個數據賦給一個變數或將一個變數的值賦給另一個變數,由賦值運算符組成的表達式稱為賦值表達式。一般形式為:

變數名 = 表達式

在程序中可以多次給一個變數賦值,每賦一次值,與它相應的存儲單元中的數據就被更新一次,內存中當前的數據就是最後一次所賦值的那個數據。

說明:

a、如果賦值號兩邊的運算對象類型不一致,系統會自動進行類型轉換,轉換的規則:將賦值號右邊表達式的值的類型轉換成賦值號左邊變數的類型,

b、 可以將復製表達式的值再賦值給變數,形成連續賦值。

二、復合的賦值運算符

在賦值運算符之前加上其他運算符可以構成復合賦值運算符。其中與算術運算有關的復合運算符是:+=,-=,*=,/=,%= 。

兩個符號之間不可以有空格,復合賦值運算符的優先順序與賦值運算符的相同。表達式n+=1等價於n=n+1,作用是取變數n中的值增1再賦給變數n,其他復合的賦值運算符的運算規則依次類推。

如求表達a+=a-=a*a 的值,其中a的初值為12 。

步驟:

   •10  逗號運算符和逗號表達式

在c語言中,逗號除了作為分隔符,還可以用作一種運算符----逗號運算符,用逗號運算符將幾個表達式連接起來,例如a=b+c,a=b*c等稱為逗號表達式。

一般形式為:

表達式1 ,表達式2 ,表達式3 , …,表達式n

例:x=2,y=3,z=4

逗號表達式具有從左至右的結合性,即先求解表達式1,然後依次求解表達式2,直到表達式n的值。表達式n的值就是整個逗號表達式的值。上述的逗號表達式的值就是表達式z=4的值4.需要注意的是,逗號運算符是所有運算符中級別最低的。

例:有如下程序段:

程序顯示結果為:y=6,x=6

討論:將y=(x=a+b),(b+c);改為y=((x=a+b),b+c) 的程序結果?

  • 11 關系運算符和關系表達式

一、   C語言中的邏輯值

C語言中的邏輯值只有兩個:真(true)和假(flase)。用非零代表真,用零代表假。因此,對於任意一個表達式,如果它的值為零,就代表一個假值,如果它的值為非零,就代表一個真值。只要值不是零,不管是正數,負數,整數,實數,都代表一個真值。例如-5的邏輯值為真。

二、   關系運算符及其優先次序

C語言提供了6種關系運算符,見表

由兩個字元組成的運算符之間不可以加空格,關系運算符都是雙目運算符。

(1)結合性:自左向右。

(2)優先次序:前4種關系運算符( <,<=,>=,> )的優先順序別相同,後兩種 (==,!=)優先順序相同,且前4種優先順序高於後兩種;關系運算符的優先順序低於算術運算符,高於賦值運算符。

三、   關系表達式

由關系運算符連接而成的表達式稱為關系表達式。

例如:a>b,(a=7)>(b=10)等都是合法的關系表達式。

關系表達式的結果有兩個:0和1,。其中0表示假,1表示真。如果關系表達式成立,則值為真,如果關系表達式不成立,則值為假。

例:變數a的值為5,b的值為6,那麼關系表達式a>b的值為假,即為0.而關系表達式

(a=13)>(b=10)的值為真,即為1。

當關系運算符兩邊值的類型不一致時,若一邊是整型,一邊是實型,系統將自動把整型數轉化為實型數,然後再進行比較。

    •12 邏輯運算符和邏輯表達式

一、   邏輯運算符及其優先順序

C語言提供了3種邏輯運算符,如下表。

二、   邏輯表達式

「&&」和「||」的運算對象有兩個,故它們都是雙目運算符,而!的運算對象只有一個,因此它是單目運算符。邏輯運算舉例如下:

(1)a&&b: 當&&兩邊都為「真」時,表達式a&&b的值才是真。

值得注意的是:在數學中,關系式0

(2)a||b: 當||兩邊有一個為「真」時,表達式a||b的值就是真。

(3)!a:   表示取反,如果a為真,則!A為假,反之亦然。例如!-5的值就為0.

在C語言中,由&&或||組成的邏輯表達式,在某些特定情況下會產生「短路「現象。

(1)x && y && z ,只有當x為真(非0)時,才需要判別y的值;只有x和y都為真時,才需要去判別z的值;只要x為假就不必判別y和z,整個表達式的值為0。口訣:「一假必假」。

例:(!5==1)&&(++i==0)  (!5==1)表達式的值為0,所以計算機運行中就跳過(++i==0)此表達式,(!5==1)&&(++i==0)表達式的值為0.

(2)x||y||z ,只要x的值為真(非零),就不必判別y和z的值,整個表達式的值為1,只有x的值為假,才需要判別y的值,只有x和y的值同時為假才需要判別z的值,口訣:「一真必真」。

   •13 位運算

一、   位運算符

在計算機中,數據都是以二進制數形式存放的,位運算就是指對存儲單元中二進制位的運算。C語言提供6種位運算符。

二、位運算

位運算符 &  |~<<  >>  ∧ 按優先順序從高到低排列的順序是:

位運算符中求反運算「~「優先順序最高,而左移和右移相同,居於第二,接下來的順序是按位與 「&「、按位異或 「∧「和按位或 「|「。順序為~  <<  >>  &  ∧  |  。

例1左移運算符「<<」是雙目運算符。其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數,高位丟棄,低位補0。

例 2右移運算符「>>」是雙目運算符。其功能是把「>> 」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。

應該說明的是,對於有符號數,在右移時,符號位將隨同移動。當為正數時,最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定。

例 3 設二進制數a是00101101 ,若通過異或運算a∧b 使a的高4位取反,低4位不變,則二進制數b是。

解析:異或運算常用來使特定位翻轉,只要使需翻轉的位與1進行異或操作就可以了,因為原數中值為1的位與1進行異或運算得0 ,原數中值為0的位與1進行異或運算結果得1。而與0進行異或的位將保持原值。異或運算還可用來交換兩個值,不用臨時變數。

所以本題的答案為: 11110000 。

『叄』 C語言的基本格式是什麼

如:

1.#include<stido >

引入頭文件(主要引入函數庫,如stdio.h;數學函數」)

2. int main(void ) {

主函數必須是小寫的(程序唯一入口,前面的int、void等都可省略,但「括弧」不能。大括弧內包含的內容為程序主體」

Int num = 10

3.printf(「會好的」);

Printf(「我今年%d歲了\n」,num);
「\n:表示換行;%d表示在這里帶入定義的函數num =
10,所以後面必須跟『num』這個標識符」

}

首先,在程序中注意一些小問題。

1.程序要在英文輸入法的界面輸入,不然程序會報警。

2.程序的格式要有一定的層次關系。

3.在定義函數(標識符)時注意不要選擇了關鍵字。最好在「=」兩邊都空一格。

4.在定義函數時注意數據類型的取值范圍。如:

整型
[signed]int
-2147483648~+2147483648
無符號整型
unsigned[int]
0~4294967295
短整型 short
[int] -32768~32768
無符號短整型
unsigned
short[int]
0~65535
長整型 Long
int
-2147483648~+2147483648
無符號長整型 unsigned
[int]
0~4294967295
字元型[signed]
char
-128~+127
無符號字元型 unsigned
char
0~255
單精度
float
3.4 x 10^(-38)~ 3.4 x
10^(+38)
雙精度
double
1.7 x 10^(-308)~ 1.7 x
10^(+308)
長雙精度 long
double 1.7
x 10^(-308)~ 1.7 x
10(+308)

『肆』 最基本的C語言語句是什麼語句

B、表達式語句

C語句可分為五類:1.表達式語句;2.函數調用語句;3.控制語句;4.復合語句;5.空語句。
其中最基本的語句是表達式語句,因為僅僅用表達式語句也能寫出簡單程序。

賦值語句屬於表達式語句中的一種
循環語句屬於控制語句中的一種

『伍』 c語言有哪些基礎知識

C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。

C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。

(5)最基本的c語言擴展閱讀:

C語言的字元串其實就是以''字元結尾的char型數組,使用字元型並不需要引用庫,但是使用字元串就需要C標准庫裡面的一些用於對字元串進行操作的函數。

它們不同於字元數組。使用這些函數需要引用頭文件<string.h>。

在C語言中,輸入和輸出是經由標准庫中的一組函數來實現的。在ANSI C中,這些函數被定義在頭文件<stdio.h>;中。

『陸』 最基本的C語言程序

定義一個double(雙精度)型變數 a並賦值a=1.0

double 和 float 的區別是double精度高,有效數字16位,float精度7位。但double消耗內存是float的兩倍,double的運算速度比float慢得多,C語言中數學函數名稱double 和 float不同,不要寫錯,能用單精度時不要用雙精度(以省內存,加快運算速度)

熱點內容
伺服器存儲1gb租賃費多少錢 發布:2024-11-01 12:38:09 瀏覽:871
蘋果6vpn添加配置怎麼弄 發布:2024-11-01 12:36:18 瀏覽:796
職場的幸福密碼是什麼 發布:2024-11-01 12:34:57 瀏覽:748
18經驗起床的伺服器ip 發布:2024-11-01 12:30:15 瀏覽:39
這個鎖屏密碼是什麼 發布:2024-11-01 12:24:51 瀏覽:92
相機存儲卡排名 發布:2024-11-01 12:24:49 瀏覽:958
androidxml格式化 發布:2024-11-01 12:23:14 瀏覽:165
Vb6編譯是錯誤不知道錯誤代碼 發布:2024-11-01 12:16:23 瀏覽:159
區域網電腦訪問伺服器怎麼提速 發布:2024-11-01 12:14:09 瀏覽:322
美創資料庫 發布:2024-11-01 12:05:45 瀏覽:916