計算機中補碼的意義
統(tǒng)一零的編碼、將符號位與其他位統(tǒng)一處理、將減法運算轉(zhuǎn)換成加法運算
c語言中有符號和無符號的區(qū)別
有符號:數(shù)據(jù)的最高位為符號位,0表示正數(shù),1表示負(fù)數(shù)
無符號:數(shù)據(jù)的最高位不是符號位,而是數(shù)據(jù)的一部分
變量的聲明與定義有啥區(qū)別
聲明變量 是對變量的類型和名稱進(jìn)行說明,不為變量開辟空間
變量定義 是根據(jù)變量類型大小為變量分配空間 變量名代表空間內(nèi)容
描述變量的命名規(guī)則
變量名由字?、數(shù)值、下劃線組成,但不能以數(shù)值開頭
#include<> 與#include ""的區(qū)別?
include<>到系統(tǒng)指定?錄尋找頭?件,#include ""先到項?所在?錄尋找頭?件,如果沒有找再到系 統(tǒng)指定的?錄下尋找頭文件
內(nèi)存的最?存儲單位以及內(nèi)存的最?計量單位分別是?
內(nèi)存的最?存儲單位為 ?進(jìn)制位, 內(nèi)存的最?計量單位 字節(jié)
描述gcc的編譯過程
gcc編譯過程分為4個階段:預(yù)處理、編譯、匯編、鏈接。 預(yù)處理:頭?件包含、宏替換、條件編譯、刪除注釋。 編譯:主要進(jìn)?詞法、語法、語義分析等,檢查?誤后將預(yù)處理好的?件編譯成匯編?件。 匯編:將匯編?件轉(zhuǎn)換成 ?進(jìn)制?標(biāo)?件。 鏈接:將項?中的各個?進(jìn)制?件+所需的庫+啟動代碼鏈接成可執(zhí)??件。
談?wù)剶?shù)據(jù)在計算機中原碼的概念
計算機原碼就是數(shù)值本身的二進(jìn)制表現(xiàn)形式,如果是無符號數(shù),所有二進(jìn)制位都是數(shù)據(jù)位。如果是有符號數(shù),二進(jìn)制的最高位為符號位(0表示正數(shù),1表示負(fù)數(shù)),其他二進(jìn)制位為數(shù)據(jù)為
談?wù)剶?shù)據(jù)在計算機中反碼的概念
反碼是從數(shù)據(jù)的原碼得來。
如果是無符號數(shù):數(shù)據(jù)的反碼就是原碼
如果是有符號數(shù):
正數(shù):數(shù)據(jù)的反碼就是原碼
負(fù)數(shù):數(shù)據(jù)的反碼就是符號位不變,其他位按位取反
談?wù)剶?shù)據(jù)在計算機中補碼的概念
補碼是從數(shù)據(jù)的反碼得來。
如果是無符號數(shù):數(shù)據(jù)的補碼就是原碼
如果是有符號數(shù):
正數(shù):數(shù)據(jù)的補碼就是原碼
負(fù)數(shù):數(shù)據(jù)的補碼就是反碼+1
關(guān)鍵字struct和union的區(qū)別
關(guān)鍵字struct 代表的是結(jié)構(gòu)體,結(jié)構(gòu)體中的所有成員擁有獨立的空間
關(guān)鍵字union代表的是共用體,共用體中的所有成員共享同一份空間
關(guān)鍵字signed和unsigned的區(qū)別
關(guān)鍵字signed描述符的是有符號數(shù),如果想定義有符號變量 可以省略signed,系統(tǒng)默認(rèn)是signed
關(guān)鍵字unsigned藐視的是無符號數(shù),如果想定義無符號變量 必須加unsigned修飾
在32位平臺char short int long float double各自的字節(jié)數(shù)
char類型為1字節(jié)
short類型為2字節(jié)
int類型為4字節(jié)
long類型為4字節(jié)
float類型為4字節(jié)
double類型為8字節(jié)
談?wù)勱P(guān)鍵字register
關(guān)鍵字register修飾的變量為寄存器變量, cpu讀取寄存器變量相較于內(nèi)存的變量的書讀快些。需要注意的如果register修飾變量只是建議該變量為寄存器變量,最終是不是是由編譯器決定的
談?wù)勱P(guān)鍵字static
static修飾的變量為靜態(tài)變量,靜態(tài)變量的生命周期是整個進(jìn)程,存在于全局區(qū)(靜態(tài)存儲區(qū))。
如果函數(shù)中存在靜態(tài)變量,如果函數(shù)多次調(diào)用,靜態(tài)變量只會初始化一次,這種特性也是普通局部變量說不具備的。函數(shù)結(jié)束靜態(tài)變量不會釋放,而函數(shù)中的普通局部變量會被理解釋放。
如果想讓函數(shù)內(nèi)部的變量不會隨著函數(shù)的結(jié)束而結(jié)束,可以選擇static修飾該變量
談?wù)勱P(guān)鍵字extern
關(guān)鍵字extern是聲明變量或函數(shù)具備外部特性,也是說當(dāng)前源文件只要使用extern聲明變量或函數(shù),就可以使用其他源文件中的變量(一般為全局變量)或函數(shù)
談?wù)勱P(guān)鍵字sizeof
關(guān)鍵字sizeof是測量類型(基本類型、構(gòu)造類型)的長度,比如int num;sizeo(num)的結(jié)果在32位平臺為4字節(jié),int arr[5];sizeof(arr)的結(jié)果在32位平臺為20字節(jié)
談?wù)勀銓ψ兞砍跏蓟睦斫?/strong>
在定義變量的時候給變量賦值,這個動作叫做變量的初始化。如果局部變量不初始化內(nèi)容隨機(不確定),全局變量,靜態(tài)變量不初始化內(nèi)容為0
談?wù)勛址械?'和字符串中的""的作用
'a':單引號的作用是描述a為字符,除轉(zhuǎn)義字符外,‘’只能作用一個字符,單引號還有作用就是取字符a的ASCII值
"abc":雙引號的作為是描述"abc"為字符串,如果是字符串常量,編譯器會自動在字符串末尾添加'\0'字符作為字符串的結(jié)束標(biāo)記。雙引號另一個作用就是取字符串首元素的地址
談?wù)?\0'和'0'的區(qū)別
'\0'表示的是反斜杠0 它在計算機中存儲的ASCII值是0
'0'表示的是字符0,它在計算機中存儲的ASCII值是48
談?wù)勈M(jìn)制123轉(zhuǎn)成二進(jìn)制,八進(jìn)制,十六進(jìn)制的結(jié)果
123的二進(jìn)制結(jié)果為:0111 1011
123的八進(jìn)制結(jié)果為:0173
123的十六進(jìn)制結(jié)果為:0x7b
談?wù)劧M(jìn)制數(shù)1100 0011轉(zhuǎn)換成十進(jìn)制、八進(jìn)制、十六進(jìn)制的結(jié)果
八進(jìn)制結(jié)果為:0332
十進(jìn)制結(jié)果為:195
十六進(jìn)制結(jié)果為:0xda
談?wù)勈M(jìn)制0x123轉(zhuǎn)換成八進(jìn)制的結(jié)果
結(jié)果為:0443
談?wù)動嬎銠C對數(shù)據(jù)的存儲(原碼,反碼,補碼)
負(fù)數(shù)在計算機中以補碼的形式存儲
非負(fù)數(shù)在計算機中以原碼的方式存儲
八進(jìn)制數(shù)在計算機中以原碼的方式存儲
十六進(jìn)制在計算機中以原碼的方式存儲
談?wù)動嬎銠C對數(shù)據(jù)的讀取(原碼,反碼,補碼)
如果是對無符號進(jìn)行取值:
不管是有符號提取(%d %hd %ld)還是無符號提取(%u %hu %lu %o %x)都是輸出內(nèi)存原樣數(shù)據(jù)
如果是對有符號進(jìn)行取值:
系統(tǒng)會去看內(nèi)存的最高位,如果最高位為0 表明正數(shù), (有符號或無符號輸出)都是 內(nèi)存原樣 輸出
系統(tǒng)會去看內(nèi)存的最高位,如果最高位為1 表明負(fù)數(shù), 無符號輸出(%u %lu %hu %o %x)都是 內(nèi)存原樣 輸出, 有符號輸出(%d %hd %ld),將內(nèi)存數(shù)據(jù)求補碼(得到原碼) 輸出
談?wù)刢語言中自動類型轉(zhuǎn)換的特點
不同類型數(shù)據(jù)之間進(jìn)行混合運算時必然涉及到類型的轉(zhuǎn)換問題。
自動類型轉(zhuǎn)換:保證精度不丟失 將小的類型 轉(zhuǎn)成 大類型。
1、無符號和有符號 參加運算 需要將有符號 轉(zhuǎn)換成無符號
2、小類型和大類型參加運算 會將小類型轉(zhuǎn)成從大類型
3、char和short類型 只要參加運算 都會將自己轉(zhuǎn)換成int類型
談?wù)勥壿嬤\算符&&和||的理解
&&邏輯與:
A && B A為真 且 B為真 整個表達(dá)式結(jié)果才為真。
A && B A或B只要有一個為假 整個表達(dá)式結(jié)果才為假。
注意:邏輯與&&的短路特性:
如果A為假 整個表達(dá)式為假, 那么B的真假決定不了整個表達(dá)式的結(jié)果,所以不會再判斷B的真假,就叫“短路特性”
||邏輯或:
A || B A和B只要有一個為真 整個表達(dá)式結(jié)果為真。
A || B A和B同時假 整個表達(dá)式結(jié)果為假。
注意邏輯或||的短路特性:
如果A為真 整個表達(dá)式為真, 那么B的真假決定不了整個表達(dá)式的結(jié)果,所以不會再判斷B的真假,就叫“短路特性”
談?wù)勎贿\算符&、|、^的應(yīng)用場景
&:一般用于將指定位清0
|:一般用于將指定位置1
^:一般用于將指定位翻轉(zhuǎn)
談?wù)勀銓壿嬘乙坪退阈g(shù)右移的區(qū)別
算術(shù)右移、邏輯右移 都是編譯器決定。如果是正數(shù)算術(shù)右移,邏輯右移沒有區(qū)別。如果是負(fù)數(shù)。
負(fù)數(shù):右邊丟棄 左邊補0(邏輯右移)
負(fù)數(shù):右邊丟棄 左邊補1(算術(shù)右移)
更多關(guān)于物聯(lián)網(wǎng)培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗,采用全程面授高品質(zhì)、高體驗培養(yǎng)模式,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實現(xiàn)高薪夢想。