c語言的基礎

q_7發表於2024-03-17

一:資料型別

1:整數型別

包括整型,長整型。短整型。區別在於,採用不同位數的二進位制編碼表示,佔用不同的儲存空間,表示不同的數值範圍,32位作業系統

型別說明符
數的範圍
位元組數
int(整型)
-2147483648 到2147483647
4
unsigned int(無符號整型)
0~65535,即 0~(2-1)
4
short int(短整型)
-32768~32767,即 -2~(2-1)
2
unsigned short int(無符號短整型)
0~65535,即 0~(2-1)
2
long int(長整型)
-2147483648~2147483647,即 -2~(2-1)
4
unsigned long(無符號長整型)
0~4294967295,即0~(2-1)
4

原碼

反碼

補碼

對應的是%d

2:實數型別

實數型別資料又稱為實數,實型資料或浮點數,指的是帶有小數部分的非整數數值

c語言提供了2種表示實數的型別,單精度型(float)和雙精度型(double)

float佔4個位元組,double佔8個位元組,double比float的資料精確的多

float對應的%f,double對應的%lf

3:字元型(char)

分為單個字元和字串

'aaa' 就是單個字元

"aaaa" 就是字串

字元是以ASCII形式儲存的,字元'A'的ASCII對應的十進位制數65,a:表示97,之間相差32

二:常量和變數

1:常量

就是值不能改變的為常量

1:整型常量

整型常量就是整數

可以用十進位制,八進位制,16進位制

2:實型常量

又被稱為浮點數,2種表示方法

(1)小數形式,由數字0-9和小數點組成,必須要有小數點 4.5 -45.232

(2)指數形式,由十進位制加階碼,階碼就是e,或者E,e(E)前面必須要有數字,後面必須是整數

合法的:

2.3E5,5.6E-3,

不合法的:

123(沒有小數點),E4(E之前沒有數字),23.-E3(負號的位置不對),2.7E(無階碼)

3:字元常量

字元常量,是一對單引號表示的字元,‘5’就是字元常量

(1)只能用單引號標識,不能使用雙引號

(2)字元常量只能是單個字元,不能是多個字元

(3)字元可以是字符集中的任意字元

大部分採用ASCII字符集

跳脫字元的含義

\n 換行 10(ASCII)
\t 製表 9
\b 退格 8
\0 空字元 0
\\ 反斜槓字元 92
\' 單引號字元 39
\'' 雙引號字元 34
\ddd 1~3位八進位制代表字元
\xhh 1~2位十六進位制代表的字元

就是裡面對應著某個數字

4:字串常量

字串常量,字串的結束符為\0看不到,但是是存在的,遇到這個\0就結束

"a"和'a'是2個不同的常量'a'字元a代表的是個數字,而"a"代表的是a和\0,所以的話,2個事不同的常量

使用strlen函式來計算字串的長度(不計算到\0)

#include <stdio.h>
int main()
{
    char arr1[] = "adada";    ###裡面有\0    
    char arr2[] = {'a','b','c'};   ###主動存放變數,沒有\0,就會列印其它的地方(就是儲存空間),遇到\0就結束
    printf("%s\n",arr1);
    int len = strlen(arr1);
    printf("長度是%d\n",len);
    printf("%s\n",arr2);
    int len1 = strlen(arr2);
    printf("長度是%d\n",len1);
}    


#這個陣列就是arr1[0] =  'a'等

5:define和const定義的常量(符號常量)

1、define定義常量

寫在外面主函式的外面,並且必須是大寫的

#define MAX 10
#include <stdio.h>
int main()
{
    printf("%d",MAX);
}
2、const定義變數

修飾的變數,本質是變數,但是不能直接去修改,所以是具有常量的屬性的

可以用陣列來判斷,因為陣列的話,裡面必須是常來那個,不能是變數,寫在主函式里面

#include <stdio.h>
int main()
{
    const int a = 10;
    printf("%d",a);

}

#下面的寫法是錯誤的
#include <stdio.h>
int main()
{
    const int a = 10;
    a = 20;
    printf("%d",a);

} 

利用陣列證明:

6:列舉常量

2:變數

1:區域性變數

區域性變數,就是在{}裡面所定義的變數,只能在裡面生效,在其他位置沒有用

案例

#include <stdio.h>
int main()
{
    {
    int a = 100;
    printf("%d\n",a);
    return 0;
    }
    //printf("%d",a);  ##{}巢狀的話,裡面的定義的,就只能在裡面使用   如果在第一層的{}裡面定義的話,就能直接在裡面使用
}  

2:全域性變數

就是定義在{}外面的變數,就能在全域性的使用這個值,不受限制

案例

int a = 100;
#include <stdio.h>
int main()
{
    {
    printf("%d\n",a);   #裡面也能使用
    }
    printf("%d\n",a);   ##外面也能使用
}  

3:變數的作用域

區域性變數的作用域:就是在那定義的就只能在這個範圍內使用

全域性變數的作用域:就是在全域性定義的話,就能在全域性的範圍內使用

4:變數的生命週期

區域性變數的生命週期:就是程式碼執行到了那個範圍的的話,就生效,離開了這個範圍的話程式碼就自動的銷燬

全域性變數的生命週期:程式執行後,就生效,程式結束後,就銷燬,就相等於全域性變數的生命週期等於程式的生命週期

3:返回的值用什麼來替代

%d  列印整型

%c  列印字元

%s  列印字串

%f  列印float型別資料

%lf  列印double型別的資料

%zu  列印sizeof的返回值

char表示字元常量和字串常量

相關文章