c語言語法目錄一
1、#include<stdio.h>
include 是要告訴編譯器,包含一個頭文件
在c語言中,任何庫函數調用都需要提前包含頭文件
<頭文件> 代表讓c語言編譯器去系統目錄下需找相關頭文件。(系統庫函數)
"頭文件" 代表讓c語言編譯器去用戶當前目錄下尋找相關頭文件。(自定義頭文件)
2、main函數
main函數是c語言的主函數,一個c語言程序有且只能有一個主函數。
3、註釋
// 單行註釋
/* */ 單行或多行註釋
4、{} 括號
函數代碼都是在{}裏包著的
5、聲明
如 :int a; 聲明一個變量一個名字叫a的整型變量
6、c語言自定義變量的要求
字母、數字和下劃線的任意組合
區分大小寫
不能使用c語言關鍵字作為變量名稱
7、每一行結尾必須是英文下的分號(;)
8、printf函數是向標準輸出設備輸出字符串
9、return語句
函數遇到return便終止了,return是關鍵字
向調用函數返回值
return 0; 主函數return 0表示成功,-1表示失敗
10、System系統調用(調用 #include<stdlib.h>頭文件)
比如執行:system(‘calc‘); 編譯執行後會自動調用計算器程序。
11、c語言程序執行過程
預編譯(.c文件)--> 編譯 --> 鏈接(可執行程序)
預編譯-E(比如:a.c轉成a.e):將程序頭文件的內容打開,去除無用的註釋之類的東西
匯編:-S ,將c語言轉化為c語言
編譯:將代碼編譯為二進制的機器指令
12、常量的定義
#define MAX=100 //定義一個常量MAX,值為100,定義時必須賦初值,且不可修改
const int a = 100 //此處a也是一個常量
#define STRING "hello" //定義了一個字符串常量
const char *str = "hello c" //也定義了一個字符串常量
說明:對於#define類型的常量,習慣是常量名大寫,但對於普通const常量及變量一般小寫結合大寫。
13、二進制數、位、字節與字
一個位只能表示0或1,兩種狀態,簡稱bit,
一個字節為8個二進制,稱為8位,簡稱BYTE,
一個字為2個字節,簡稱WORD
2個字為雙字,簡稱DWORD
14、二進制、八進制、十六進制
十進制: 0 1 2 3 4 5 6 7 8 9 10 滿十進一
二進制: 0 1 10 滿二進一
八進制(o): 0 1 2 3 4 5 6 7 10 11 12 滿八進一
十六進制(0x/x): 0 1 2 3 4 5 6 7 8 9 a b c d e f 滿十六進一
十進制--->八進制 /二進制/十六進制
十進制數作為被除數,八進制(二進制、十六進制)作為除數,每一次取得余數倒序排列即為八進制數(二進制/十六進制)
%x 代表輸出16進制數,%X 用大寫字母方式輸出16進制數。
%o 代表輸出八進制數
15、sizeof 關鍵字
功能是求指定數據類型在內存中的大小,單位:字節。
16、short,long,longlong,unsigned int
short 短整型 2字節 16bit
long 長整型 32位系統下是4字節,64位系統是4字節,unix是8字節
long long 是64位,即8字節,32位系統效率低
int 一致是 4字節(不分平臺)
unsigned(無符號) 0000 0000 ->1111 1111 0->255
有符號時 0000 0000 -> 1111 1111 -127->127
18、整數溢出
計算一個整數的時候超過整數能夠容納的最大單位數後會溢出,溢出的結果就是高位舍棄。
例如:
unsigned short a = 0xffff;
a = a + 100;
printf("%d\n",a); //a=99
分析:a = 1111 1111 1111 1111
a+100 = a+1+99 = 1 0000 0000 0000 0000 + 99
short為兩個字節,16bits,超過部分會溢出,不計入,所以:
a + 100 = 0 + 99 = 99
當一個小的整數賦值給大的整數,符號位不會丟失,會繼承。
例如:
int i = 1234;
short a = -2;
i = a;
printf("%x\n",i); # ?FFFFFFFE?
19、大端對齊和小端對齊
對於arm、intel這些x86構架的復雜指令CPU,整數在內存中是倒著存放的,低地址放低位,高地址放高位,被稱為小端對齊。
對於unix服務器的CPU,更多采用大端對齊的方式。
如下圖所示:
20、原碼、反碼、補碼與無符號數
1、原碼
最高位數為符號位(0代表正,1代表負)
0000 0011 --> 3 1000 0011 --> -3
2、反碼
一個數如果值為正,那麽反碼和原碼相同 如:3的反碼 0000 0011
一個數如果值為負,那麽符號位為1,其他各位與原碼相反(0變1,1變0)
如 -3的反碼為:1111 1100
3、補碼(計算機中負數以補碼存放)
正數:原碼、反碼、補碼都相同
負數:最高位為1,其余各位原碼取反,最後加1.
負數時的轉換:原碼-->反碼(除最高位1不變,其余全部取反)
原碼<-->補碼(最高位1不變,其余取反,再加1)
c語言語法目錄一