整理學習過程和文檔,每個blog10個問題。
問題1: 為什麼分低級語言,高級語言之分。
機器指令: 00000010 machine instruction
機器語言: 00000010 00001010 指令的集合;型號不同的機器,機器語言不同
進化為-》
符號語言:ADD A,B symbolic language,需要軟件把這些符號轉化為機器語言,這個過程叫匯編assemble, 因此符號語言也叫assemble language.貼近計算機,型號不同的機器,匯編語言不同,又叫低級語言。只限專業人士使用。
再進化為-》》
高級語言: 不依賴於具體機器,並且符合人類的語言習慣。 比如打印 printf("................");同樣需要翻譯為機器語言,叫compile.高級語言的一句往往對應多條機器指令。
問題2:高級語言的主要分類。
主要分面向對象和面向過程的。c為面向過程的,c++為面向對象的。
問題3:c語言簡要歷史
1973貝爾實驗室發明c,並改寫unix. 1983出了個標准, 1989出了個標准,1999出了個標准。
問題4: 為什麼加#include <stdio.h>
c語言不提供輸入輸出語句,內存操作語句等,這些都是由編譯系統所提供的庫函數實現的
#include <stdio.h> 此句表示從存放c編譯系統的子目錄中查找stdio.h文件,並包含,從而可以調用相應的輸入輸出語句。
問題5:c語言為什麼經常用來編寫系統軟件。
能實現匯編的大部分功能,可直接訪問物理地址。
問題6: 最簡的main函數以及為什麼這樣寫?
int main()
{
return 0;
}
int 為c99建議加上的; 設計時肯定會這樣設計, 返回0表示成功,成功只有一樣,返回非0表示失敗,失敗的原因可以有很多比如返回1,返回-1,返回2,是這種設計思想。
問題7 為什麼對函數聲明?
直接編譯下面的代碼會報c3861錯誤 identifier not found
法1 把聲明去掉注釋;法2 把定義提前;
同樣道理,
#include <stdio.h>
int main()
{
printf("Please input two numbers, seperated by space \n");
int a,b;
// int myMax(int num1,int num2);//
scanf("%d %d",&a,&b);
int c = myMax(a,b);
printf("the max number between %d and %d is %d",a,b,c);
return 0;
}
int myMax(int num1, int num2)
{
int maxNum;
maxNum = num1>=num2?num1:num2;
return maxNum;
}
問題8 為什麼有鏈接這一步?
.c源文件編譯生成二進制.obj文件,但是不能執行,不同的.c文件生成自己的.obj,顯然需要link所有的obj文件成為一個exe文件; 即使一個源文件也需要和編譯系統的函數庫鏈接。
問題9 有哪些常量?
(1)想到最簡單的常量就是數字了; 如 1, 55, 50.2, 78.34e4, 43.22E3
(2)字符常量: 普通字符'1', 'a', '4','\n' 注意只是一個形狀像數字4的圖像字符,其表示方法為ASCII碼,沒有字符'44'. '\033' or '\x1B'代表ASCII碼為27的字符,即ESC控制符。
(3)字符串常量: “hello world”
(4) #define PI 3.1415926
問題10 #define PI 3.1415926與const double PI = 3.1415926;區別?
一個是變量,一個是符號常量;一個占內存,一個不占內存;一個有類型,一個沒有類型,一個一直存在,一個預編譯後符號被替代。
摘自:drbinzhao的專欄