語法結構: 型別 變數名
拓展:變數名屬於識別符號 識別符號只能數字、字母和下劃線命名 首字元不能是數字 不能和關鍵字相同
資料型別相關關鍵字
一、char
char 字元型 用char定義變數是字元型變數 佔1位元組 只能儲存字元 不能儲存字串
有符號範圍:-256255(-2^72^7-1)
無符號範圍:0-1~2^8-1
二、short
short 短整形 用short定義的變數是短整形變數 佔2個位元組
有符號範圍:-3276832767(-2^152^15-1)
無符號範圍:0~2^16-1
三、int
int 整形 用int定義的變數為整形變數 在32位及以上的作業系統中佔4個位元組
有符號範圍:-231~231-1
無符號範圍:0~2^31-1
四、long
long長整形 用long定義的變數為長整形 在32位的作業系統中佔4個位元組 在64位作業系統中佔8個位元組
五、float
float 單精度浮點型(實數) 用float定義的為單浮點型實數,佔4個位元組
六、double
double 雙精度浮點型(實數) 用double定義的為雙浮點實數,佔8個位元組
七、struct
struct為結構體型別相關的關鍵字,可以用它來定義結構體型別,
八、union
union為共用體(聯合體)相關的關鍵字
九、enum
enum為列舉型別相關的關鍵字
十、signed
signed 表示有符號意思 在定義char、整形(short、int、long)資料時用signed修飾,代表定義的資料型別是有符號的,可以儲存正數,也可以儲存負數 預設情況下signed可以省略不寫
十一、unsigned
unsigned 表示無符號意思 在定義char、整形(short、int、long)資料時用unsigned修飾,代表定義的資料型別是無符號的,可以儲存正數和0
十二、void
void為空型別關鍵字 不能定義變數 它是用來修飾函式的引數和返回值,代表函式沒有引數或者沒有返回值
儲存相關關鍵字
一、register
register 代表暫存器,用register修飾的變數為暫存器變數 即在編譯的時候告訴編譯器,盡量將其儲存空間分配在暫存器中。
注:(1)定義的變數不一定放在暫存器中
(2)cpu取資料的時候去暫存器中拿資料比在記憶體中要快
(3)因為暫存器比較寶貴,盡量不要在定義暫存器變數
(4)register只能修飾字元型及整形,不能修飾浮點型
(5)因為register修飾的變數是存在暫存器中,所以不能對暫存器去位址
二、static
static 靜態變數 可以修飾全域性變數、函式 使用static修飾的變數,此變數儲存在記憶體的靜態空間中
三、const
const是常量意思 用const修飾的變數是不可修改的,不能修改它的值
四、auto
auto int a和int a 一樣
五、extem
extern 外部,一般定義用於函式和全域性變數
其他關鍵字
一、sizeof
用來測量變數、陣列占用的儲存空間大下(位元組數)
二、typedef
重新命名相關關鍵字 作用是給已有的型別,重新定義乙個型別名,並沒有建立乙個新的型別
例如:typedef unsigned char ucahr;
三、volatile
用volatile定義的變數,是易改變的,即告訴cpu每次用到volatile變數的時候,重新去記憶體中取保證每次得到的資料都是最新的,而不是暫存器的備份。
格式化輸出字元
%d 十進位制輸出有符號整數
%ld十進位制輸出long有符號整數
%u 十進位制輸出無符號整數
%o 八進位制輸出整數
%x 十六進製制輸出整數
%f 輸出float浮點數
%lf輸出double型浮點數
%e輸出指數形式的浮點數
%c 輸出單個字元
%s 輸出字串
%p 輸出指標值
型別轉換
轉換方式一:自動轉換 遵循一定規則由編譯器自動完成型別轉換
轉換方式二:強制型別轉換 把表示式的運算結果強制轉換成所需的資料型別
通過型別轉換運算來實現 (型別說明符)(表示式)
注意:型別說明符必須加括號
算數運算子
運算子 描述 例項
檢查左運算元的值是否大於右運算元的值,如果是則條件為真。 (a > b) 不為真。< 檢查左運算元的值是否小於右運算元的值,如果是則條件為真。 (a < b) 為真。
= 檢查左運算元的值是否大於或等於右運算元的值,如果是則條件為真。 (a >= b) 不為真。
<= 檢查左運算元的值是否小於或等於右運算元的值,如果是則條件為真。 (a <= b) 為真。
邏輯運算子
運算子 描述 例項
&& 稱為邏輯與運算子。如果兩個運算元都非零,則條件為真。 (a && b) 為假。
|| 稱為邏輯或運算子。如果兩個運算元中有任意乙個非零,則條件為真。 (a || b) 為真。
! 稱為邏輯非運算子。用來逆轉運算元的邏輯狀態。如果條件為真則邏輯非運算子將使其為假。 !(a && b) 為真。
位運算子
運算子 描述 例項
& 如果同時存在於兩個運算元中,二進位制 and 運算子複製一位到結果中。 (a & b) 將得到 12,即為 0000 1100
| 如果存在於任一運算元中,二進位制 or 運算子複製一位到結果中。 (a | b) 將得到 61,即為 0011 1101
^ 如果存在於其中乙個運算元中但不同時存在於兩個運算元中,二進位制異或運算子複製一位到結果中。 (a ^ b) 將得到 49,即為 0011 0001
~ 二進位制補碼運算子是一元運算子,具有"翻轉"位效果,即0變成1,1變成0。 (~a ) 將得到 -61,即為 1100 0011,乙個有符號二進位制數的補碼形式。
<< 二進位制左移運算子。左運算元的值向左移動右運算元指定的位數。 a << 2 將得到 240,即為 1111 0000
二進位制右移運算子。左運算元的值向右移動右運算元指定的位數。
賦值運算子
下表列出了 c 語言支援的賦值運算子:
運算子 描述 例項
= 簡單的賦值運算子,把右邊運算元的值賦給左邊運算元 c = a + b 將把 a + b 的值賦給 c
+= 加且賦值運算子,把右邊運算元加上左邊運算元的結果賦值給左邊運算元 c += a 相當於 c = c + a
-= 減且賦值運算子,把左邊運算元減去右邊運算元的結果賦值給左邊運算元 c -= a 相當於 c = c - a
*= 乘且賦值運算子,把右邊運算元乘以左邊運算元的結果賦值給左邊運算元 c *= a 相當於 c = c * a
/= 除且賦值運算子,把左邊運算元除以右邊運算元的結果賦值給左邊運算元 c /= a 相當於 c = c / a
%= 求模且賦值運算子,求兩個運算元的模賦值給左邊運算元 c %= a 相當於 c = c % a
<<= 左移且賦值運算子 c <<= 2 等同於 c = c << 2
= 右移且賦值運算子 c >>= 2 等同於 c = c >> 2&= 按位與且賦值運算子 c &= 2 等同於 c = c & 2
^= 按位異或且賦值運算子 c ^= 2 等同於 c = c ^ 2
|= 按位或且賦值運算子 c |= 2 等同於 c = c | 2
雜項運算子 ↦ sizeof & 三元
下表列出了 c 語言支援的其他一些重要的運算子,包括 sizeof 和 ? :。
運算子 描述 例項
sizeof() 返回變數的大小。 sizeof(a) 將返回 4,其中 a 是整數。
& 返回變數的位址。 &a; 將給出變數的實際位址。
自增自減運算子
(1)將++或者–放在變數後面
注意:先使用後自增或自減
(2)將++或者–放在變數前面
注意:先自增或自減後使用
C語言基礎一
命令語句都是在蘋果終端下使用的。編譯 cc c hello.c 把源 變成二進位制檔案 目標檔案 cc one.o two.o three.o 預設生成可執行檔案a.out cc o task one.o 生成可執行檔案task 執行 1 在終端輸入 a.out 2 雙擊a.out檔案,選擇用終端執...
c語言基礎(一)
雙精度和單精度 數字後帶f的是單精度float,不帶的是雙精度double,單精度儲存的範圍是雙精度的倍數,兩種都屬於浮點型,當整數部分位數太多時候,小數部分很可能被遺失。ascii碼中0 31和127是不可以在鍵盤中輸入的。除了轉義字元 字元常量 a 單引號包含乙個 x和兩個16進製制數 任何0 ...
C語言基礎 一
一 語言的發展 1 機器語言 特點 a.或稱為二進位制 語言,計算機可以直接識別,不需要做任何翻譯.b.是第一代的計算機語言.c.使用時難記憶難操作編寫出來的程式全是由0和1的數字組成,直觀性差,難以閱讀,不僅難學,難記難檢查,又缺乏通用性.2.十進位制轉為二進位制 將十進位制除以2的餘數寫出來 直...