編譯器運行時檢查
不會。
所謂注釋,便是用自然語言對源代碼中某些語句或方法進行說明。並且注釋的內容不會被編譯器編譯。可以在源代碼中添加任何想要添加的說明。
注釋可以出現在代碼中的任何位置,用來向用戶提示或解釋代碼的含義。程序編譯時,會忽略注釋,不做任何處理,就好像它不存在一樣。
Ⅱ 在java中已檢查異常和位未檢查異常是什麼二者有何區別
1、含義不同:檢查異常就是編譯器要求你必須處置的異常。不知道你編程的時候有沒有遇到過,你寫的某段代碼,編譯器要求你必須要對這段代碼trycatch,或者throwsexception。
非檢查異常是編譯器不要求強制處置的異常,雖然有可能出現錯誤,但是不會在編譯的時候檢查。
2、運行時情況不同:運行時異常都是RuntimeException類及其子類異常,如NullPointerException(空指針異常)、IndexOutOfBoundsException(下標越界異常)等,這些異常是非檢查異常,程序中可以選擇捕獲處理,也可以不處理。
這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發生。
運行時異常的特點是Java編譯器不會檢查它,也就是說,當程序中可能出現這類異常,即使沒有用try-catch語句捕獲它,也沒有用throws子句聲明拋出它,也會編譯通過。
運行時異常是RuntimeException以外的異常,類型上都屬於Exception類及其子類。從程序語法角度講是必須進行處理的異常,如果不處理,程序就不能編譯通過。
如IOException、SQLException等以及用戶自定義的Exception異常,一般情況下不要自定義檢查異常。
3、解決方式不同:檢查異常繼續拋出,消極的方法,一直可以拋到java虛擬機來處理,就是通過throwsexception拋出。用try...catch捕獲。注意,對於檢查的異常必須處理,或者必須捕獲或者必須拋出。
對未檢查的異常捕獲;繼續拋出;不處理。
一般是不處理的,因為你很難判斷會出什麼問題,而且有些異常你也無法運行時處理,比如空指針,需要人手動的去查找,而且,捕捉異常並處理的代價遠遠大於直接拋出。
(2)編譯器運行時檢查擴展閱讀:
所有異常類型都是Throwable類的子類,它包含Exception類和Error類,Exception又包括checkedexception和uncheckedexception。
uncheckedexception:Java編譯器不要求對未檢查異常一定捕獲或拋出,可以不做處理。此類異常通常是在邏輯上有錯誤,可以通過修改代碼避免。在eclipse中(保存即編譯)編譯後此類異常發生處會報錯。
checkedexception:Java編譯器要求對檢查異常必須捕獲或拋出,代碼邏輯沒有錯誤,但程序運行時會因為IO等錯誤導致異常,你在編寫程序階段是預料不到的。
如果不處理這些異常,程序將來肯定會出錯。所以編譯器會提示你要去捕獲並處理這種可能發生的異常,不處理就不能通過編譯。
Ⅲ c++編譯時沒錯誤 但運行時卻有一個錯誤
下標越界或指針沒初始化。。。
while (1);
加了#include <stdlib.h>後可以用 system("PAUSE");
Ⅳ c語言編譯器如何運行
編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。
1、預處理階段:
主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)
2、匯編階段:
插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。
3、編譯階段:
將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。
4、鏈接階段:
在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。
Ⅳ gcc編譯器在編譯過程會進行哪些檢查
一個編譯器,執行的時候
先會做詞法分析,其中會判斷是否符合詞法規范,一般用有限自動機寫
然後是語法分析,自頂向下的LL和自底向上的LR,會判斷是否符合文法規范
然後就是四元式,語義動作、匯編指令,後面的檢查應該就不多了
Ⅵ 按異常在編譯時是否被檢測來分,異常可以分成哪兩種
檢查時異常(checkException)和運行時異常(runtime Exception)
Ⅶ 如何快速查找C語言編譯時的錯誤
1、首先,我們啟動編譯軟體程序,今天我們以VC++6.0為例。
注意事項:
編譯語言是一種以編譯器來實現的編程語言。它不像直譯語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器碼,再加以運行。理論上,任何編程語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程序的應用有關。
Ⅷ c語言編譯時需要檢查嗎
你問的需要檢查,是檢查什麼?
C語言編譯時會檢查語法是否正確,類型是否匹配等。不檢查數組越界,死循環,無限遞歸等。
Ⅸ 請教編譯與調試的區別是什麼
不調試直接編譯,省去調試步驟,節約CPU計算資源等。所以說「代價小」。不過一般調試也佔用不了多少資源。
Ⅹ keil編譯器運行為什麼檢測不到錯誤
答:這種情況是你的程序還有別的錯誤,
當你把別的錯誤改掉後,再編譯你的vid 就會提示錯誤。
這種情況keil 經常有的。