C語言【編譯器、變量、輸入輸出有關的】
一些想到的【從編譯器到變量到輸入輸出有關的】的問題,有些是按自己理解寫的答,有些待解決。
-
C語言可以跨平臺,匯編不可以,編譯時C語言會根據不同系統翻譯成不同形式的匯編語言。
-
C語言中算數運算會在寄存器中運行,變量保存在堆或棧中。
-
遺留問題: C語言變量名如何在匯編語言中表現的?
-
一些C標準:
C89 = C90 = ANSIC = 標準C
C99 引入了一些新特性(如 單行注釋)
C11 (2011年發(fā)行)
......
-
C語言、C語言標準、C編譯器 之間的聯系?
C語言 是一個泛指。
C語言標準 是一些權威機構(也許也有個人)定義的一些語法規(guī)范。
C編譯器 是按照C語言標準將C語言代碼翻譯成機器可以識別的指令的程序。
C編譯器比如 gcc、clang等。
可以通過gcc或clang編譯C語言代碼時指定C標準,如下:
gcc -std=c89 main.c -o main # c89的"c"一定要小寫 clang -std=c99 main.c -o main
mingw和cygwin都是用于安裝C語言編譯器的跨平臺工具, cygwin是一個類Unix環(huán)境的模擬器 。
- 遺留問題:makefile的編寫規(guī)則?make為什么可以運行makefile?在win上如何使用make??
-
遺留問題:標準輸入輸出等函數是編譯器提供的嗎?它們屬不屬于編譯器的一部分?嘗試下載gcc或clang編譯器,查看不同編譯器之間庫函數有什么不同。?
-
main函數返回值返回到了哪里?-----操作系統。 有沒具體點的回答呢?
-
待附圖:C語言的執(zhí)行過程??
-
預處理。 .c 文件 ----> .i 文件。 .i 文件為解決了#(預處理)后的文件。
gcc -E xxx.c -o xxx.i
-
編譯。 .i 文件 ----> .s 文件。 .s文件為匯編代碼文件。
gcc -S xxx.i -o xxx.s
-
匯編。 .s 文件 ----> .o 文件 / .obj 文件。 .obj 為二進制文件。
gcc -c xxx.s -o xxx.obj # 或 gcc -c xxx.s # 這樣默認輸出為 .o 文件 # .o文件是Linux下默認的二進制文件
-
鏈接。 多個 .o 文件 或 .obj 文件 ----> .exe文件(或其他格式可執(zhí)行文件)
gcc xxx.o -o xxx.exe # 后面的-o xxx.exe可以不寫
-
-
使用 scanf(...) 輸入數據時,輸入數據的格式要與 scanf(...) 中第一個參數的格式相同。且使用 scanf(...) 時不能加提示語,想要提示輸入的話,可以前面加 printf(...)
// 格式之間是用逗號隔開,則輸入之間也用逗號隔開 scanf("%d,%d,%d", &num1, &num2, &num3); // 格式之間是用空格隔開,則輸入之間也用空格隔開 scanf("%d %d %d", &num1, &num2, &num3);
-
逗號表達式和同時多個聲明并賦值使用逗號的區(qū)別??
兩種根本不是一回事。
int a=10, b=20, c, d=30; // 這就是連續(xù)聲明或聲明并賦值 a = (10, b = 2*2, 5); // 給b賦值4,并給a賦值5 int x, y, z = (10, 20, 30); // 只給z賦值30。 x、y只聲明一下。
-
遺留問題:可不可以用"%d"輸出字符類型的數據?反過來呢?其他的格式和變量混亂輸出形式呢? 像"%d"這樣的占位符還有哪些,分別有什么作用??
%d 表示十進制整數。其他問題待查 。
- 問題:有哪些變量默認初始值為0?全局變量是嗎?數組呢?局部變量?......? 局部變量和靜態(tài)局部變量是隨機值,全局變量是默認為0或""。靜態(tài)局部變量的作用是有記憶功能,它被放在全局靜態(tài)區(qū),和全局變量在一個區(qū)。
-
vscode + gcc 時,C語言文件的路徑不能有中文存在。
-
C語言中的標識符是什么,有沒有長度限制,區(qū)不區(qū)分大小寫?
程序中各種變量名、函數名、數組名、結構體名、枚舉類型名等。
C語言標識符可以包含字母、數字、下劃線,但不能以數字開頭。
沒有長度限制(也許有些編譯器或平臺會限制),但不建議寫太長。
區(qū)分大小寫。
-
記四個有點眼生的存儲類型關鍵字: auto、extern、register、static 分別有什么作用待查
-
記幾個C99增加的關鍵字:inline、restrict、_Bool、 _Complex、Imaginary 分別有什么作用待查,似乎用處不是很廣泛
-
記幾個C11增加的關鍵字:_Alignas、 _Alignof、 _Atomic、 Static_assert、 _Noreturn、 _Thread_local、 _Generic
-
初步認識常量
-
字面量常量。如1、2、3......
-
標識符常量。
第一種表示: #define 常量名 常量值 //預處理方式 ,一種替換,后面跟表達式時記得加括號,不加分號
第二種表示: const 類型 常量名 = 常量值;
枚舉常量 待學
-
-
遺留問題:main函數中的參數 int argc, char const * argv[] 有什么含義?
-
C語言沒有乘方運算符,但可以使用math.h頭文件中的函數 pow(2, 3) 即表示2的3次方,返回double類型。
-
遺留問題:C標準庫中的頭文件只是函數聲明的功能嗎?比如stdio.h有沒有對應的體文件?
-
遺留問題:getchar()的具體細節(jié)?文章來源:http://www.zghlxwxcb.cn/news/detail-746180.html
-
遺留問題:int i=1;? i++ + ++i; 和 ++i + i++; 的結果是多少?如何運算的?文章來源地址http://www.zghlxwxcb.cn/news/detail-746180.html
到了這里,關于C語言【編譯器、變量、輸入輸出有關的】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!