基本語法
1、計算機中補碼的意義
統一零的編碼、將符號位與其他位統一處理、將減法運算轉換成加法運算
2、c語言中有符號和無符號的區別
有符號:數據的最高位為符號位,0表示正數,1表示負數
無符號:數據的最高位不是符號位,而是數據的一部分
3、變量的聲明與定義有啥區別
聲明變量 是對變量的類型和名稱進行說明,不為變量開辟空間
變量定義 是根據變量類型大小為變量分配空間 變量名代表空間內容
4、描述變量的命名規則
變量名由字?、數值、下劃線組成,但不能以數值開頭
5、#include<> 與#include ""的區別?
include<>到系統指定?錄尋找頭?件,#include ""先到項?所在?錄尋找頭?件,如果沒有找再到系 統指定的?錄下尋找頭文件
6、內存的最?存儲單位以及內存的最?計量單位分別是?
內存的最?存儲單位為 ?進制位, 內存的最?計量單位 字節
7、描述gcc的編譯過程
gcc編譯過程分為4個階段:預處理、編譯、匯編、鏈接。 預處理:頭?件包含、宏替換、條件編譯、刪除注釋。 編譯:主要進?詞法、語法、語義分析等,檢查?誤后將預處理好的?件編譯成匯編?件。 匯編:將匯編?件轉換成 ?進制?標?件。 鏈接:將項?中的各個?進制?件+所需的庫+啟動代碼鏈接成可執??件。
8、談談數據在計算機中原碼的概念
計算機原碼就是數值本身的二進制表現形式,如果是無符號數,所有二進制位都是數據位。如果是有符號數,二進制的最高位為符號位(0表示正數,1表示負數),其他二進制位為數據為
9、談談數據在計算機中反碼的概念
反碼是從數據的原碼得來。
如果是無符號數:數據的反碼就是原碼
如果是有符號數:
正數:數據的反碼就是原碼
負數:數據的反碼就是符號位不變,其他位按位取反
10、談談數據在計算機中補碼的概念
補碼是從數據的反碼得來。
如果是無符號數:數據的補碼就是原碼
如果是有符號數:
正數:數據的補碼就是原碼
負數:數據的補碼就是反碼+1
11、關鍵字struct和union的區別
關鍵字struct 代表的是結構體,結構體中的所有成員擁有獨立的空間
關鍵字union代表的是共用體,共用體中的所有成員共享同一份空間
12、關鍵字signed和unsigned的區別
關鍵字signed描述符的是有符號數,如果想定義有符號變量 可以省略signed,系統默認是signed
關鍵字unsigned藐視的是無符號數,如果想定義無符號變量 必須加unsigned修飾
13、在32位平臺char short int long float double各自的字節數
char類型為1字節
short類型為2字節
int類型為4字節
long類型為4字節
float類型為4字節
double類型為8字節
14、談談關鍵字register
關鍵字register修飾的變量為寄存器變量, cpu讀取寄存器變量相較于內存的變量的書讀快些。需要注意的如果register修飾變量只是建議該變量為寄存器變量,最終是不是是由編譯器決定的
15、談談關鍵字static
static修飾的變量為靜態變量,靜態變量的生命周期是整個進程,存在于全局區(靜態存儲區)。
如果函數中存在靜態變量,如果函數多次調用,靜態變量只會初始化一次,這種特性也是普通局部變量說不具備的。函數結束靜態變量不會釋放,而函數中的普通局部變量會被理解釋放。
如果想讓函數內部的變量不會隨著函數的結束而結束,可以選擇static修飾該變量
16、談談關鍵字extern
關鍵字extern是聲明變量或函數具備外部特性,也是說當前源文件只要使用extern聲明變量或函數,就可以使用其他源文件中的變量(一般為全局變量)或函數
17、談談關鍵字sizeof
關鍵字sizeof是測量類型(基本類型、構造類型)的長度,比如int num;sizeo(num)的結果在32位平臺為4字節,int arr[5];sizeof(arr)的結果在32位平臺為20字節
18、談談你對變量初始化的理解
在定義變量的時候給變量賦值,這個動作叫做變量的初始化。如果局部變量不初始化內容隨機(不確定),全局變量,靜態變量不初始化內容為0
19、談談字符中的''和字符串中的""的作用
'a':單引號的作用是描述a為字符,除轉義字符外,‘’只能作用一個字符,單引號還有作用就是取字符a的ASCII值
"abc":雙引號的作為是描述"abc"為字符串,如果是字符串常量,編譯器會自動在字符串末尾添加'\0'字符作為字符串的結束標記。雙引號另一個作用就是取字符串首元素的地址
20、談談'\0'和'0'的區別
'\0'表示的是反斜杠0 它在計算機中存儲的ASCII值是0
'0'表示的是字符0,它在計算機中存儲的ASCII值是48
21、談談十進制123轉成二進制,八進制,十六進制的結果
123的二進制結果為:0111 1011
123的八進制結果為:0173
123的十六進制結果為:0x7b
22、談談二進制數1100 0011轉換成十進制、八進制、十六進制的結果
八進制結果為:0332
十進制結果為:195
十六進制結果為:0xda
23、談談十六進制0x123轉換成八進制的結果
結果為:0443
24、談談計算機對數據的存儲(原碼,反碼,補碼)
負數在計算機中以補碼的形式存儲
非負數在計算機中以原碼的方式存儲
八進制數在計算機中以原碼的方式存儲
十六進制在計算機中以原碼的方式存儲
25、談談計算機對數據的讀取(原碼,反碼,補碼)
如果是對無符號進行取值:
不管是有符號提取(%d %hd %ld)還是無符號提取(%u %hu %lu %o %x)都是輸出內存原樣數據
如果是對有符號進行取值:
系統會去看內存的最高位,如果最高位為0 表明正數, (有符號或無符號輸出)都是 內存原樣 輸出
系統會去看內存的最高位,如果最高位為1 表明負數, 無符號輸出(%u %lu %hu %o %x)都是 內存原樣 輸出, 有符號輸出(%d %hd %ld),將內存數據求補碼(得到原碼) 輸出
26、談談c語言中自動類型轉換的特點
不同類型數據之間進行混合運算時必然涉及到類型的轉換問題。
自動類型轉換:保證精度不丟失 將小的類型 轉成 大類型。
1、無符號和有符號 參加運算 需要將有符號 轉換成無符號
2、小類型和大類型參加運算 會將小類型轉成從大類型
3、char和short類型 只要參加運算 都會將自己轉換成int類型
27、談談邏輯運算符&&和||的理解
&&邏輯與:
A && B A為真 且 B為真 整個表達式結果才為真。
A && B A或B只要有一個為假 整個表達式結果才為假。
注意:邏輯與&&的短路特性:
如果A為假 整個表達式為假, 那么B的真假決定不了整個表達式的結果,所以不會再判斷B的真假,就叫“短路特性”
||邏輯或:
A || B A和B只要有一個為真 整個表達式結果為真。
A || B A和B同時假 整個表達式結果為假。
注意邏輯或||的短路特性:
如果A為真 整個表達式為真, 那么B的真假決定不了整個表達式的結果,所以不會再判斷B的真假,就叫“短路特性”
28、談談位運算符&、|、^的應用場景
&:一般用于將指定位清0
|:一般用于將指定位置1
^:一般用于將指定位翻轉
29、談談你對邏輯右移和算術右移的區別
算術右移、邏輯右移 都是編譯器決定。如果是正數算術右移,邏輯右移沒有區別。如果是負數。
負數:右邊丟棄 左邊補0(邏輯右移)
負數:右邊丟棄 左邊補1(算術右移)