C語言複習(二)

一、程序結構

1.選擇語句

if ... else... 

2.循環語句

while....
for...

二、函數

自定義庫函數 & 庫函數
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>

Add(int x, int y)
{
    int z = x + y;
    return z;
}
int main()
{
    int num1 = 10;
    int num2 = 20;
    int sum = 0;
    sum = Add(num1, num2);
    printf("sum = %d\n",sum);
    return 0;
}

結果:
C語言複習(二)

三、數組

數組(下標默認從0開始)

arr[10]={0};
int main()
{
    int arr[] = {1,2,3,4,5,6,7,8,9,10}; 
    int i = 0;
    while (i < 10)
    {
        printf("%d ", arr[i]);
        i++;
    }
    return 0;
}

結果:
C語言複習(二)

四、操作符

1.單目操作符

! 邏輯反操作符: 0 假  非0 真
- 負值 + 正值
& 取地址
sizeof 操作數的類型長度(以字節爲單位)
 ~ 對一個數的二進制按位取反
-- 前置、後置
++ 前置、後置
* 間接訪問操作符(解引用操作符)
(類型) 強制類型轉換(不建議使用)

sizeof:

int main()
{
    int a = 10;
    int arr[10] = { 0 };
    int sz = 0;
    printf("數組佔存儲空間 %d 字節\n", sizeof(arr));
    //計算數組元素個數
    sz = sizeof(arr) / sizeof(arr[0]);
    printf("數組元素個數爲 %d\n", sz);
    //sizeof 計算的是變量/類型所佔空間的大小,單位是字節
    printf("%d\n", sizeof(a));      //OK
    printf("%d\n", sizeof(int));      //OK
    printf("%d\n", sizeof a);       //OK
    //printf("%d\n", sizeof int);   //ERROR
    return 0;
}

結果:
C語言複習(二)

~ :

int main()
{
    int a = 0;//4個字節,32bit
    int b = ~a;//按位取反
    //負數在內存中存儲的時候,存儲的是二進制的補碼,最高位是符號位
    printf("%d\n", b);      //答案是-1!!!
    //printf打印的是原碼  補碼-1=反碼 反碼符號位不變,其餘位取反=原碼
    return 0;
}

結果:
C語言複習(二)

類型強制轉換操作符:

int main()
{
    int a = (int)3.14;  //強制類型轉換double -> int
    return 0;
}

2.雙目操作符

a.算術操作符

+  -   *   /    %(求模運算)

b.移位操作符

左移操作符:左邊丟棄,右邊補零
右移操作符:右邊丟棄,左邊補零
int main()
{
    int a = 1;
    int b = a << 2;     //a本身不會移位
    printf("a = %d b = %d\n",a,b);
    return 0;
}

結果:
C語言複習(二)

c.位操作符

&  按位與
|  按位或
^  按位異或:對應的二進制位相同爲0,相異爲1
int main()
{
    int a = 3;  //011
    int b = 5;  //101
    int c = a&b;
    printf("%d\n", c);  //1
    c = a | b;
    printf("%d\n", c);  //7
    c = a ^ b;
    printf("%d\n", c);  //6
    return 0;
}

結果:
C語言複習(二)

d.賦值操作符

=

e.複合賦值符

+=   -=    &=    *=    /=    |=    %=   ^=   <<=   >>=

f.關係操作符

> >= < <= != ==

g.邏輯操作符

&& - 邏輯與
|| - 邏輯或

3.三目操作符

條件操作符

    exp1 ? exp2 : exp3;

4.逗號表達式

exp1,exp2,exp3,....,expn

5.下標引用、函數調用和結構成員

[] ()  .  ->

五、常見關鍵字

auto    break    case    char    const    continue    default    do    double    else    
enum        extern    float    for    goto    if    int    long    register    return    short   
signed    unsigned    sizeof    static    struct    switch    typedef    union    void
volatile    while
注:變量名不能和關鍵字重合

auto:

int main()
{
    auto int a = 10;//局部變量均爲自動變量(一般省略)
    return 0;
}

register:

計算機 存儲數據

寄存器(register)
高速緩存
內存
硬盤
register int a = 10;//建議把a變量存放在寄存器中

signed:

signed int = int

union:

聯合體/共合體

typedef:

類型定義,即類型重定義
eg: typedef unsigned int uint_32;

static:

* static修飾局部變量時,局部變量的生命週期變長
* static修飾全局變量時,改變了變量的作用域 - 讓靜態的全局變量只能在自己所在的
源文件內部,出了源文件就無法使用了。
* static修飾函數時,改變了函數的鏈接屬性。普通函數具有外部鏈接屬性,被static
修飾的函數只具有內部鏈接屬性。
void test()
{
    static int a = 1;   //a是一個靜態的局部變量
    a++;
    printf("a = %d\n", a);
}
int main()
{
    int i = 0;
    while (i < 5)
    {
        test();
        i++;
    }
    return 0;
}

結果:
C語言複習(二)

六、#define

1.#define定義標識符常量

eg:#define MAX 100

2.#define定義宏-帶參數

eg:#define MAX(a,b) (a>b?a:b)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章