c语言pow函数用法_C语言基础的不能再基础的程序知识!“hello world”!
涉及到的知識點有:include有兩種用法、{}大括號用法解釋、C語言自定義名字的要求、
c語言庫函數printf的解釋、編譯錯誤有兩種、調用system函數、c語言編譯過程、
操作系統結構、指令集中的cpu架構 、QT常用快捷鍵、vs常用快捷鍵
=============================================================================
將windows的可執行文件上傳到linux,看能夠執行嗎?
sftp> put a.exe
出現下面錯誤:沒有權限;拒絕訪問
-bash: ./a.exe: Permission denied
那我們提升下a.exe的權限試試
chmod u+x a.exe
則出現下面錯誤:不能執行二進制文件:執行格式錯誤
-bash: ./a.exe: cannot execute binary file: Exec format error
說明windows的可執行文件不能再linux系統下執行
fatal error 致命錯誤
=============================================================================
#include的意思是頭文件包含,使用c語言庫函數需要提前包含所用到的庫函數對應的頭文件
c語言中如果要用到printf函數,在使用前必須 #include
-----------------------------------------------------------------------------
include有兩種用法:
1、#include <文件名> 說明需要包含的文件在系統目錄下
2、#include “文件名” 說明需要包含的文件在當前目錄下
-----------------------------------------------------------------------------
可執行代碼必須放在{}大括號里面
; 在c語言中一行只寫一個分號是可以的,表示是空語句。
c語言中一組大括號里也可以再有多組大括號。
-----------------------------------------------------------------------------
int a; //定義一個變量。
extern int b; //聲明一個變量。
-----------------------------------------------------------------------------
C語言自定義名字的要求:
可以使用大小寫字母、下劃線、數字,但第一個字母必須是字母或者下劃線。
且字母區分大小寫。(注意:BASIC語言不區分大小寫)
-----------------------------------------------------------------------------
printf 是c語言庫函數,功能是:向標準輸出設備輸出一個字符串
(注意:標準輸出設備不僅僅指的是控制臺、屏幕,還有打印機等等什么的。)
printf 函數只能用在控制臺程序里面(就是字符界面下的),不能用在圖形界面下,即不能把一個字符串輸出到窗口里面。
可以通過命令 man 3 printf 來查看。
-----------------------------------------------------------------------------
編譯錯誤有兩種
warning 不影響編譯,只是警告。
error 編譯器徹底罷工了,不干活了。
-----------------------------------------------------------------------------
第一種寫法:
int main()
{
return 0;
}
第二種寫法:
void main()
{
return ;//或者可以這句話不用寫
}
對c語言,兩種寫法都對,但對于C++來講,只支持第一種寫法。
-----------------------------------------------------------------------------
在main函數中
return 0; 代表程序執行成功,
return -1; 代表程序執行失敗。
-----------------------------------------------------------------------------
c語言文件的擴展名是.c,C++文件的擴展名就是cpp
linux系統并不用后綴名來區分文件;
Linux不像Windows一樣區分文件后綴的,所以是可以改的,而且不影響使用的。
1,mv可以移動文件,也可以用作更改文件名。
2,修改命名:mv fileName.type fileName.newType就可以更改文件后綴了。
3,但是一些特定的文件不要隨意更改,例如配置文件。
=============================================================================
在使用system之前需要包含stdlib.h這個頭文件,
調用system函數,可以在c語言的代碼中執行另外一個程序
-----------------------------------------------------------------------------
如果在命令行執行一個程序,那么這個程序的調用者就是操作系統;
如果在代碼中通過system,執行一個程序,那么這個程序的調用者就是自己寫的代碼本身。
c語言所有的庫函數調用,只能保證語法是一致的,但不能保證執行結果是一致的,
同樣的,庫函數在不同的操作系統下執行結果可能是一樣的,也可能是不一樣的。
不同平臺下的c語言的庫函數只能保證調用語法一樣,但不能保證執行結果也是一樣的。
(因為c語言對硬件的要求、對操作系統的要求太多啦!)
所以用C語言在不同的平臺寫代碼的時候,可能會有一些移植的工作量。
-----------------------------------------------------------------------------
POSIX是一個標準,只要符合這個標準的函數,在不同的系統下執行的結果就可以一致。
如果有符合posix標準的函數,盡量使用。
Unix和Linux很多庫函數都是支持POSIX的,但windows支持的比較差。(曾經微軟說過要表示大力支持,但說得多做得少!)
所以說,如果將Unix代碼移植到Linux一般代價很小,如果把windows代碼移植到Unix或者linux就比較麻煩。
-----------------------------------------------------------------------------
system 返回的是一個整數。
即system的返回值就是所被調用程序中main函數的return的值。
=============================================================================
c語言編譯過程
1、預編譯 --> 2、編譯 --> 3、鏈接
-----------------------------------------------------------------------------
預編譯命令:
gcc -o cc1.c c1.c -E或者gcc -o cc1.c -E c1.c 或者 gcc -E c1.c -o cc1.c
(注意:-o 作用是指定輸出文件的名字,如果不加-o的話,則生成的文件名字總叫a.out)
預編譯c1.c,預編譯之后得到的文件的名字叫cc1.c。
(注意:編譯后的名字可以隨意起,但是呢我們知道預編譯后的文件還是文本的.c文件,所以為了好區分起名字為 xxx.c)
在c語言中#開頭的語句又叫預編譯指令。
#include
預編譯的功能之一:會把include包含的頭文件內容做一個簡單的替換,即替換到.c文件里面去。
......
//此處省略1萬行
......
預編譯的功能之二:會把代碼中的注釋去掉。
-----------------------------------------------------------------------------
編譯的命令:
gcc -o cc1.o cc1.c -c或者gcc -o cc1.o -c cc1.c 或者 gcc -c cc1.c -o cc1.o
編譯cc1.c,編譯之后得到的文件名字叫cc1.o.
編譯的功能是:把文本的c語言編譯為二進制指令。
-----------------------------------------------------------------------------
鏈接的命令:
gcc -o c1 cc1.o 或者 gcc cc1.o -o c1(注意:gcc沒有單獨的鏈接參數)
將系統庫函數與cc1.o進行鏈接(簡言之合并),得到可執行的程序,該程序的名字叫c1。
我們想知道在linux系統下到底鏈接來了什么庫來呢?(即可執行程序需要用到什么庫呢?)
使用命令 ldd c1 查看。
(注意;用c語言寫的代碼依賴的庫最少,如果使用其他語言依賴的庫更多哦!!需要裝好多包包。)
那么在windows系統下的可執行程序需要用到什么庫呢?
使用一個小軟件Depends.exe可以查看的到。
=============================================================================
操作系統結構
1、用戶模式
我們目前寫的程序都是在用戶模式下運行的。
2、內核模式
操作系統本身、設備驅動等這些軟件是在內核模式下運行的。
-----------------------------------------------------------------------------
一個CPU的一個寄存器可以放8個二進制位。
例如:
0000 0000
1111 1111
則這個CPU就是8位的CPU。
-----------------------------------------------------------------------------
一個CPU的一個寄存器可以放16個二進制位。
0000 0000 0000 0000
1111 1111 1111 1111
則這個CPU就是16位CPU。
-----------------------------------------------------------------------------
總線有三種:數據總線、地址總線、控制總線。
總線在大多數時候和CPU的寄存器位數是相同的。
8位CPU的總線是8位。
1111 1111
f f
256BYTE(255字節)
16位CPU的總線是16位。
1111 1111 1111 1111
f f f f
65536BYTE(64k字節)
32位CPU的總線是32位。
1111 1111 1111 1111 1111 1111 1111 1111
f f f f f f f f
32位CPU管理內存有一個最大值,4G字節 = 4 x 1024M = 4 x 1024 x 1024 x 1024Byte(字節)。
64位CPU的總線是64位。
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
f f f f f f f f f f f f f f f f
理論上64位CPU管理內存是:2^64個字節,但同時又取決于綜合的指標:比如主板、操作系統的支持等等。
但至少是遠遠大于4G的。
如果寄存器是64位,但總線是32位,這種cpu叫準64位CPU。
(即里面可以做到很寬,但是外面的工藝卻達不到)
若在64位的CPU架構上運行了64位的軟件操作系統,那么這個系統是64位的;
若在64位的CPU架構上運行了32位的軟件操作系統,那么這個系統是32位的。
-----------------------------------------------------------------------------
指令集中的cpu架構
精簡指令集RISC(服務器端用的)比如:SPARC、ARM屬于精簡指令集。
復雜指令集CISC(比如Inter的CPU)比如:X86屬于典型的復雜指令集。
-----------------------------------------------------------------------------
cpu內部里面所有的計算都得在寄存器里面來完成。
cpu內部的寄存器還有名字哦:
8位cpu(x86構架) 16位CPU 32位CPU 64位CPU
a ax,al,ah eax rax
b bx,bl,bh ebx rbx
c cx ecx rcx
d dx edx rdx
-----------------------------------------------------------------------------
使用Qt時,再用到system函數時,會出現一個控制臺的窗口。
為什么呢?
答:因為system函數在windows系統下就是一個基于控制臺的函數(就是字符界面的函數),所以即使在圖形界面下調用system也會出現一個控制臺窗口。
那么如何在圖形界面下調用該函數又不顯示控制臺呢?
答:可以換另外一個函數啊!該函數是 WinExec("notepad",SW_NORMAL); 但是該函數需要包含一個頭文件是 #include 。
QT常用快捷鍵
Ctrl + I 自動格式化代碼
Ctrl + / 注釋代碼/取消注釋代碼
Ctrl + r 不調試運行代碼
Ctrl + b 編譯代碼但不運行代碼
Alt + enter 自動完成類函數定義
F9 設置斷點
F5 調試運行
F10 next調試
F11 step調試
-----------------------------------------------------------------------------
vs常用快捷鍵
Ctrl + F5 不調試運行代碼
Ctrl + k,Ctrl + f 自動格式化代碼
Ctrl + k,Ctrl + c 注釋代碼
Ctrl + k,Ctrl + u 取消注釋代碼
Ctrl + Shift + b 編譯,不運行代碼
F5 調試運行
F9 設置斷點
注意:C語言以分號結尾的,而不是以行結尾的。
=============================================================================
“我是一名從事了10年開發的老程序員,最近我花了一些時間整理關于C語言、C++,自己有做的材料的整合,一個完整的學習C語言、C++的路線,學習材料和工具。C/C++、編程愛好者的聚集地就在我這里 <進入我的專欄即可看到及領取>!歡迎初學和進階中的小伙伴。希望你也能憑自己的努力,成為下一個優秀的程序員。工作需要、感興趣、為了入行、轉行需要學習C/C++的伙伴可以跟我一起學習!”關注我的專欄,帶你遨游代碼世界!
程序猿?zhuanlan.zhihu.com最后分享一張C/C++學習路線圖給愛學習的小伙伴們
總結
以上是生活随笔為你收集整理的c语言pow函数用法_C语言基础的不能再基础的程序知识!“hello world”!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jenkins 增量发布插件_CI/CD
- 下一篇: python俄罗斯方块代码34行_少儿编