1. 程式人生 > >c語言語法目錄一

c語言語法目錄一

區分大小寫 計算器 無符號 使用 64位 AI 構架 include blog

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語言語法目錄一