C語言學習筆記(1)

來源:互聯網
上載者:User

1. 編譯和連結

將程式轉化為機器可執行檔代碼,C語言分為三個步驟:

A. 先行編譯。程式首先會交給前置處理器,前置處理器執行以#開頭的指令,然後給程式添加指令,或者修改指令。

B. 編譯。修改後的程式進入編譯器,編譯器會把程式翻譯成機器指令(也就是目標代碼),但是這樣的程式還是不能執行的。

C. 連結。連結器把由編譯器產生的目標代碼和其他所需的代碼整合到一起,這些附加程式碼封裝括程式中用到的庫函數。這樣就產生了完全可執行檔程式。

2. main函數中的exit和return

在main函數中,以兩者結尾是一樣的。都是終止程式執行,並且向作業系統返回0。

不過exit需要引入stdlib.h庫函數。

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
printf("Hello world");
exit(0);
//return 0;
}

3. %i和%d

在printf中使用時,兩者沒有區別,但是在scanf中,%d只能接受10進位的整數。

但是%i還可以接受八進位和十六進位的整數。

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int i ;
scanf_s("%i",&i);
printf("%d",i);
}

4. scanf函數

scanf本質上是一種“模式比對”函數。

但是在Visual Studio中調用scanf函數時會給出這樣的提示:The function may be unsafe.Please using scanf_s instead.

當使用者從鍵盤輸入時,程式並沒有讀取輸入,而是把使用者的輸入放在一個隱藏的緩衝區中,由scanf來讀取。因此如果使用者輸入了多餘的字元,scanf無法徹底完成模式比對,scanf就會把字元放回緩衝區供後續scanf函數的讀取。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.