機器語言——組合語言——高階語言
組合語言和硬體相關, 不同的硬體使用的指令集不同。 arm和x86就不同。移植性差。
高階語言不依賴硬體。編譯器將高階語言翻譯成組合語言,再翻譯成機器語言。
linux在當前環境執行可執行檔案要加./ 如./a.out
linux在絕對路徑下執行加斜槓即可 如 /home/edu/c_code/a.out
c語言由函式組成, 有且只有乙個main函式,程式執行先從main函式執行。main函式又系統自動呼叫,不需要人為呼叫。
windows下使用gcc需要在我的電腦環境變數中的path新增qt目錄下的bin, 使用gcc前先用gcc -v檢視gcc是否存在
0、切換碟符時無需cd 直接c:
1、進入**所在目錄 (使用絕對路徑時候不用去所**在的目錄)
2、dir檢視目錄資訊
3、gcc hello.c 預設在當前生成a.exe gcc hello.c -hello 預設在當前生成hello.exe
4、執行在windows下無需./ 可直接輸入a.exe或a來執行
gcc 是由gnu開發的程式語言編譯器
linux編譯的程式只能在linux下進行,windows編譯的程式只能在windows下執行。
linux的64位和32位不相容, windows的32位編譯後可以在64位執行, 但是64位編譯後不能在32位執行。
system函式
system函式的標頭檔案位
system的作用為在執行函式過程中,呼叫函式外部指令。用法system("外部指令");
同樣**int b=system(「./a.out」);加入a.out return 100,在不同系統平台下system的返回值b不一樣。c語言所有庫函式的呼叫,在不同平台下只能保證語法一致的,不能保證執行結果一致,所以c語言相容性不如想象的好。linux和unix發展離不開posix標準,但是windows支援比價差。 所以linux和unix相互相容較好,但是windows和linux/unix相容性較差。
為什麼windows的中文字元和linux中文字元相互傳輸時候會是亂碼。
windows預設支援的中文編碼gbk,gb2312,ansi
linux預設支援的中文編碼是utf-8
可以使用notepad將**源檔案格式建utf-8轉換為ansi格式消除亂碼
windows指令
mstsc -v username 遠端控制計算機
calc 計算器
mspaint 畫圖板
notepad 記事本
可以在**中使用system("calc");來呼叫計算器
windows下的圖形介面有兩個qt和mfc
qt建立工程路徑和名稱都不可以是中文
qt在ui中選擇按鈕,然後在按鈕中右鍵選擇「轉到槽」然後使用system函式呼叫外部應用,即可實現圖形介面。
vs在mfc中選擇按鈕,然後雙擊進入對應**,再新增system函式呼叫外部應用,即可實現圖形介面。
c語言編譯的4步驟
1、預處理:不檢查語法, 巨集定義展開,標頭檔案展開,條件編譯,同時將**中的注釋刪除。
gcc -e hello.c -o hello.i
2、編譯: 檢查語法,將預處理後的檔案編譯生成彙編檔案
gcc -s hello.i -o hello.s
3、彙編:將彙編檔案生成目標**(二進位制檔案)
gcc -c hello.s -o hello.o
gcc hello.o -o hello
ldd檢視linux下可執行檔案需要的動態庫ldd hello
windows下可以使用depends.exe來檢視某個軟體依賴的動態庫,直接把軟體拖到depends.exe即可。
交換檔案說明:我們通過vi寫檔案時候沒有儲存就關閉,會自動生成乙個.swp的交換檔案,這個交換檔案會儲存前邊我們沒有儲存的內容。
對於交換檔案.swp檔案下輸入r自動恢復, d 刪除交換檔案,e直接編輯,.....
ls-alh會發現乙個隱藏檔案.swp。如果確認恢復過後就可以rm -rf刪除.swp檔案了.
暫存器是cpu內部的基本儲存單位。
執行程式時候,1、先將程式從硬碟載入到記憶體,2、 如果需要運算不能直接在記憶體中運算,如果需要運算會將記憶體中的資料載入到cpu中的暫存器進行運算。3、 最後將暫存器的計算結果移到記憶體中。 假如某些記憶體資料需要頻繁計算即頻繁和cpu暫存器互動時候,可以把這些資料放到cpu的快取中,便於提高速度。
cpu 通過匯流排和外部裝置互動,如果匯流排寬度是8位的,所以cpu的暫存器也是8位的。
64位的cpu架構執行32位的作業系統,這個作業系統仍舊是32位的。
離cpu內部最近的是暫存器,然後是快取, 然後是記憶體。
vs 可以先在某一行**設定斷點,然後除錯, 然後在除錯的按鈕下選擇視窗, 再選擇反彙編即可檢視彙編**。
vs中使用sacnf、strcpy、sprintf會產生c4996告警, 解決方法1:在首行新增 #define _crt_secure_no_warings
解決方法2:在首行新增 #define pragma waring(disable:4996)
通過vs或qt編譯**,必須新建專案或工程才可以編譯
python基礎程式設計day03
從來記錄文字資訊 表示方法 空字串的表示方式 非空字串的表示方式 hello hello hello hello 單引號雙引號的區別 單引號內部的雙引號不算結束符 雙引號內部的單引號不算結束符 三引號字串 作用 三引號內可以包括單引號和雙引號 三引號字串中的換行符會自動換成 n 轉義序列代表特殊的字...
c 基礎學習Day03
計算機語言和程式設計方法的發展day03 最初的計算機語言 機器語言 由二進位制 構成 計算機硬體可以識別 可以表示簡單的操作 例如 加法 減法 資料移動等等 組合語言 將機器指令對映為助記符 如add sub mov等 抽象層次低,需要考慮機器細節。高階語言 關鍵字 語句容易理解 有含義的資料命名...
day03 前端基礎
transform translate x,y x 表示向x軸正方向移動的距離 x表示向x軸反方向移動的距離 y 表示向y軸正方向移動 這裡的y軸正方向指的向下移動 y表示向y軸反方向 延y軸向上移動!示例 transform translate 300px,0px transform transl...