C语言基础语法总结(一)
文章目錄
- C變量
- C常量
- C存儲類
- C運算符
- C判斷
- C循環(huán)
-
C變量
變量定義
變量定義就是告訴編譯器在何處創(chuàng)建變量的存儲,以及如何創(chuàng)建變量的存儲。
在這里,type必須是一個有效的C數(shù)據(jù)類型,可以是char、w_char、int、float、double或任何用戶自定義的對象,variable_list可以由一個或多個標識符名稱組成。
變量聲明
變量聲明向編譯器保證變量以指定的類型和名稱存在,這樣編譯器在不需要知道變量完整細節(jié)的情況下也能繼續(xù)進一步的編譯。變量聲明只在編譯時有它的意義,在程序連接時編譯器需要實際的變量聲明。
extern 外部的,出現(xiàn)即指外部變量
實例
#include<stdio.h>// 函數(shù)外定義變量 x 和 y int x; int y; int addtwonum() {// 函數(shù)內(nèi)部聲明變量x和y為外部變量extern int x;extern int y;// 給外部變量(全局變量)x和y賦值x = 1;y = 2;return x+y; }int main() {int result;//調(diào)用函數(shù) addtwonumresule = addtwonum();printf("result 為:%d",result);return 0; }如果需要在一個源文件中引用另外一個源文件中定義的變量,我們只需在引用的文件中將變量加上extern關(guān)鍵字的聲明即可。
addtwonum.c 文件代碼:
#include<stdio.h> /* 外部變量聲明*/ extern int x; extern int y; int addtwonum() {return x+y; }test.c 文件代碼:
#include<stdio.h> /*定義兩個全局變量*/ int x = 1; int y = 2; int addtwonum(); int main(void): {int result;result = addtwonum();printf("result 為:%d",result);return 0; }編譯執(zhí)行上述代碼
gcc addtwonum.c test.c -o main ./main result 為:3-
C常量
整數(shù)常量
整數(shù)常量可以是十進制、八進制或十六進制的常量。前綴指定基數(shù):0x或0X表示十六進制,0表示八進制,不帶前綴則默認表示十進制。
整數(shù)常量也可以帶一個后綴,后綴是U和L的組合,U表示無符號整數(shù)(unsigned),L表示長整數(shù) (long)。后綴可以是大寫也可以是小寫
浮點常量
浮點常量由整數(shù)部分、小數(shù)點、小數(shù)部分和指數(shù)部分組成。您可以使用小數(shù)形式或者指數(shù)形式來表示浮點常量。
當使用小數(shù)形式表示時,必須包含整數(shù)部分、小數(shù)部分,或同時包含兩者。當使用指數(shù)形式表示時, 必須包含小數(shù)點、指數(shù),或同時包含兩者。帶符號的指數(shù)是用e或E引入的。
字符常量
字符串常量
定義常量
#define預處理器
實例:
#include<stdio.h>#define LENGTH 10 #define WIDTH 5 #define NEWLINE '\n'int main() {int area;area = LENGTH * WIDTH;printf("value of area : %d",area);printf("%c",Newline);return 0; }const 關(guān)鍵字
可以使用const前綴聲明指定類型的變量,如下:
實例:
#include<stdio.h> int main() {const int LENGTH 10;const int WIDTH 5;const int NEWLINE '\n';int area;area = LENGTH * WIDTH;printf("value of area : %d",area);prtintf("%c",NEWLINE);return 0;-
C存儲類
auto存儲類
auto存儲類是所有局部變量默認的存儲類。
上面的實例定義了兩個帶有相同存儲類的變量,auto只能用在函數(shù)內(nèi),即auto只能修飾局部變量。
register存儲類
register存儲類用于定義存儲在寄存器中而不是RAM中的局部變量。這意味著變量的最大尺寸等于寄存器的大小(通常是一個詞),且不能對它應用一元的’&'運算符(因為它沒有內(nèi)存位置)。
寄存器只用于需要快速訪問的變量,比如計數(shù)器。還應注意的是,定義’register’并不意味著變量將被存儲在寄存器中,它意味著變量可能存儲在寄存器中,這取決于硬件和實現(xiàn)的限制。
static存儲類
static 存儲類指示編碼器在程序的生命周期內(nèi)保持局部變量的存在,而不需要在每次它進入和離開作用域時進行創(chuàng)建和銷毀。因此,使用static修飾局部變量可以在函數(shù)調(diào)用之間保持局部變量的值。
static 修飾符也可以應用于全局變量。當static修飾全局變量時,會使變量的作用域限制在聲明它的文件內(nèi)。
全局聲明的一個static變量或方法可以被任何函數(shù)或方法調(diào)用,只要這些方法出現(xiàn)在跟static變量或方法同一個文件中。
實例:
#include<stdio.h>/*函數(shù)聲明*/ void func1(void); static int count = 10; /*全局變量 -static 是默認的 */int main() {while (count--) {func1();}return 0; }void func1(void) { /* 'thingy'是'func1'的局部變量 -只初始化一次* 每次調(diào)用函數(shù)'func1''thingy'值不會被重置。*/static int thingy=5;thingy++;printf("thingy 為 %d, count 為 %d\n",thingy,count);}實例中count作為全局變量可以在函數(shù)內(nèi)使用,thingy使用static修飾后,不會在每次調(diào)用時重置。
extern存儲類
extern存儲類用于提供一個全局變量的引用,全局變量對所有的程序文件都是可見的。當使用extern時,對于無法初始化的變量,會把變量名指向一個之前定義過的存儲位置。
extern是用來在另一個文件中聲明一個全局變量或函數(shù)。extern修飾符通常用于當有兩個或多個文件共享相同的全局變量或函數(shù)的時候
第一個文件:main.c
#include <stdio.h>int count ; extern void write_extern();int main() {count = 5;write_extern(); }第二個文件:support.c
#include<stdioo.h> extern int count ; void write_extern() {printf("count is %d\n",count); }第二個文件中的extern關(guān)鍵字用于聲明已經(jīng)在第一個文件main.c中定義的count。
-
C運算符
算數(shù)運算符
+(加)、-(減)、*(乘)、/(除)、%(取模取余)、++(自增,增加1)、–(自減)
a++為先賦值后運算 ++a為先運算后賦值
關(guān)系運算符
==、!=、<、>、>=、<=
邏輯運算符
&&:稱為邏輯與運算符。如果兩個操作數(shù)都非零,則條件為真
||:邏輯或運算符。如果兩個操作數(shù)中有任意一個非零,則條件為真
!:邏輯非運算符。用來逆轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果條件為真則邏輯非運算符將使其為假
位運算符
假設(shè)變量A的值為60(00111100),變量B的值為13(00001101),則:
| & | 按位與操作,按二進制位進行"與"運算。運算規(guī)則:0&0=0;0&1=0;1&0=0;1&1=1 | (A&B)將得到12,即00001100 |
| l | 按位或運算符,按二進制位進行"或"運算。運算規(guī)則:`0 | 0=0;0 |
| ^ | 異或運算符,按二進制位進行"異或"運算。運算規(guī)則:0^0=0;0 ^1=1;1 ^0=1;1 ^1=0 | (A^B)將得到49,即00110001 |
| ~ | 取反運算符 | (~A)將得到-61,即為11000011,一個有符號二進制數(shù)的補碼形式 |
| << | 二進制左移運算符。將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0) | A<<2將得到240,即11110000 |
| >> | 二進制右移運算符。將一個數(shù)的各二進制位全部右移若干位,正數(shù)左補0,負數(shù)左補1,右邊丟棄 | A>>2將得到15,即00001111 |
賦值運算符
=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=
雜項運算符
| sizeof() | 返回變量的大小 | sizeof(a)將返回4,其中a是整數(shù) |
| & | 返回變量的地址 | &a;將給出變量的實際地址 |
| * | 指向一個變量 | *a;將指向一個變量 |
| ?: | 條件表達式 | 如果條件為真?則值位X:否則值為Y |
C中的運算符優(yōu)先級
后綴:() [] -> . ++ -- 從左到右
一元:+ - ! ~ ++ -- (type)* & sizeof 從右到左
乘除:* / % 從左到右
加減:+ - 從左到右
移位:<< >> 從左到右
關(guān)系:< <= > >= 從左到右
賦值:= += -= *= /= %= >>= <<= &= ^= |= 從右到左
-
C判斷
C語言把任何非零和非空的值假定為true,把零或null假定為false
if語句 if…else語句 嵌套if語句
switch語句 嵌套switch語句
?:運算符(三元運算符)
輸入一個數(shù)字來判斷它是否為奇數(shù)或偶數(shù)實例
-
C循環(huán)
循環(huán)類型
while循環(huán)
for循環(huán)
for ( init; condition; increment ) {statement(s); }do…while循環(huán)
do {statement(s); } while (condition);條件表達式出現(xiàn)在循環(huán)的尾部,所以循環(huán)中的statement(s)會在條件被測試之前至少執(zhí)行一次
嵌套循環(huán)
循環(huán)控制語句
break語句
當break語句出現(xiàn)在一個循環(huán)內(nèi)時,循環(huán)會立即終止,且程序流將繼續(xù)執(zhí)行緊接著循環(huán)的下一條語句
它可用于終止switch語句中的一個case,如果時嵌套循環(huán),break語句會停止執(zhí)行最內(nèi)層的循環(huán),然后開始執(zhí)行該塊之后的下一行代碼
continue 語句
告訴一個循環(huán)體立即停止本次循環(huán)迭代,重新開始下一次循環(huán)迭代
goto語句
將控制轉(zhuǎn)移到被標記的語句。但是不建議在程序中使用
*無限循環(huán)
如果條件用于不為假,則循環(huán)將變成無限循環(huán)。for循環(huán)在傳統(tǒng)上可用于實現(xiàn)無限循環(huán)。由于構(gòu)成循環(huán)的三個表達式中任何一個都不是必需的,可以將某些條件表達式留空來構(gòu)成一個無限循環(huán)
可以按 ctrl+c 鍵終止一個無限循環(huán)
總結(jié)
以上是生活随笔為你收集整理的C语言基础语法总结(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解放军的万能武器——中国工兵铲?
- 下一篇: 巴西印度美国俄罗斯,四个国家中哪个粮食出