怎麼判斷語句編譯不出錯
⑴ 通過示例展示C++編譯器如何知道某個語句沒有任何錯誤
這個東西有點復雜,可以通過調試之類的手法發現哪個變數的值出現問題,舉個例子,你在cin後面再cout,就可以看出你的數據有沒有存進去
⑵ oracle存儲過程提示編譯完成但存在錯誤,如何查看錯誤
1、首先打開PL/sql Developer軟體,新建sql窗口。
⑶ 編譯原理如何判斷id+id*id沒有語法錯誤
構造LL(1)語法分析程序,任意輸入一個文法符號串,並判斷它是否為文法的一個句子.程序要求為該文法構造預測分析表,並按照預測分析演算法對輸入串進行語法分析,判別程序是否符合已知的語法規則,如果不符合(編譯出錯),則輸出錯誤信息.
以你說的SQL語句為例,詞法分析是將語句中的單詞流識別出來,比如create table Student 詞法分析是分析出 這句的單詞流是 「create」 「table」 「identifier」(前提是你給它們編號 比如用宏或者枚舉),然後語法分析 是通過單詞流 判斷 非邏輯錯誤 比如 有不能識別的符號 create table後面不是標示符等等 語義分析是分析語句的邏輯關系 比如欄位長度越界什麼的如 vchar(2) 你賦值為「啊啊啊啊啊啊」這種錯誤的識別是語義分析階段完成的 希望能幫到你
⑷ 設有如下變數,以下哪些語句編譯不出錯
void (*pf)(); 定義函數指針pf,指向返回值為void的函數,參數任意
pf = fun; 正確!
pf = &fun; 正確!C照樣認可這種寫法,只是不同的觀點而已!請參看《C和指針》
void *pf(); 聲明pf函數,沒有參數,但返回void *類型!只是聲明,還沒有定義!
另外,pf 本身是地址,不是變數,不可以更改!故pf = fun;錯誤!
再看這一句
D)void (*pf)(int,char);pf=&fun;
首先聲明pf為函數指針,它指向的函數返回void類型,
參數為int和char(不是char *,否則就對了)
而fun的參數2為char *類型,故兩者類型不匹配,pf=&fun; 錯誤!
⑸ C++開發,如何區分編譯錯誤和運行錯誤。
野指針什麼的在編譯期是編譯器是查不出來的。
但有一些編繹器會有警告的方式體現出來。
程序盡量的在debug下調試。多trace下。
⑹ 程序無法編譯通過問題,怎麼解決
關於程序無法通過編譯的問題,其錯誤類型肯定是有很多種的。根據我多年的編程調試經驗,可以給你提供以下幾種類型的錯誤,供你參考(以下以 C 語言編程經驗為例,其他編程語言的調試思路也是同理的)。
其中最容易調試的程序錯誤類型就是:
(1)、在編寫源程序過程中出現的各種語法錯誤。這種錯誤主要是由於剛剛開始學習編程,對編程語言的語句、以及語法結構還不是很清晰造成的,這種錯誤是最容易進行調試的,因為語法錯誤,編譯器連編譯都無法通過(通常會顯示出來具體是哪一行出現錯誤),這樣的話,你就可以直接到出錯的那一行進行修改源代碼了;
(2)、若是經過一段時間的上機練習,對學習編程的初始階段已經較為熟練了、且語法錯誤較少了之後,之後就會遇到更加復雜、並且難於調試的語義錯誤。例如在 C 語言中,對於如下代碼:
void main( )
{
int n ;
scanf("%d", &n) ;
if( n == 100 )
printf(" n is 100 !\n") ;
else
printf(" n is not 100 !\n") ;
}
但是若在邏輯判斷語句:if( n == 100) 中,如果誤將「==」(邏輯等於)寫成了「=」(賦值等於),那麼在 scanf("%d", &n) 語句中,無論你輸入的 n 等於多少,一旦執行 if 語句,那麼 將 100 這個數字賦給變數 n,則該邏輯表達式的值總是 1,程序的運行結果必定總是輸出:n is 100。
而該程序的實際思路是:從鍵盤輸入一個整數,如果該整數等於 100,則輸出:n is 100 !如果輸入的整數不等於 100 的話,則輸出:n is not 100 !
像這樣的邏輯錯誤(在對 C 語言源程序進行編譯時,C 語言編譯器是檢查不出來的),如果沒有豐富的程序調試經驗,程序調試起來就是非常困難的。
(3)、其它的錯誤類型例如:數組越界、非法使用了未初始化的指針變數、未對指針變數進行有效的內存分配,就向那一塊存儲區域讀寫數據,等等。這些都會造成程序崩潰,嚴重的就會造成操作系統崩潰。
⑺ 編程錯誤的時候一般怎麼找出錯誤,不是編譯錯誤是編程錯誤
其實你的問題總結一下就是如何檢查bug:
1、排查流程
2、總結
解決bug過程可能痛苦,累人,難受,壓力大,甚至暫時還解決不了,關鍵看是不是盡力了。要想自己得到提高,達到更高層次,這個坎必須跨過,否則只能是平庸的程序員,只能承擔一些簡單的任務。
解決bug的過程也能學到很多東西,也有很多樂趣,自己也能得到很大的提升,解決bug是屬於自己職責范圍內的事情,是種樂趣還是種包袱,關鍵看個人的心態。
最後,給大家分享一句很有名的話叫」峰高無坦途「,意思是:要想登上最高峰欣賞美景,沒有平坦的道路可走,都是懸崖峭壁,想登上高峰欣賞美景,必須跨過這些坎。
⑻ 運行下列語句,查看代碼能否編譯通過。如果能編譯通過,請列出運行的結果, 否則,請說明編譯失敗的原因
編譯不能通過.
因為input輸入的數據類型預設是字元串型的,所以變數age需要轉成整型值才能進行比較.
把age=input("請輸入年齡:")改成age=int(input("請輸入年齡:"))就行了.
完整的Python程序如下
age=int(input("請輸入年齡:"))
if age>=18:
print("歡迎光臨")
print("Hello World!")
源代碼(注意源代碼的縮進)
⑼ 對於C語言編程出了錯,怎麼能快速找出錯誤呢
代碼是否存在邏輯錯誤:
1、變數使用前未被數值
實例:
int main()
{
int x=5,y,z;
z=x*y;
printf("%d",z);
return 0;
}
在此程序中變數y在使用之前未被賦值,所以結果輸出z的值就會是系統隨機分配一個值給y再加乘以x的值。
2、把賦值賦值符號「=」與等於符號「==」相混淆
實例:
有一下語句:
if(a=5)
{
printf("a等於5");
}
輸出的結果永遠都是「a等於5」,原因是在執行if(a=5)之時,無論a之前是什麼值,此時都會被重新賦值為5,而不是把a的值與5相比較,而正確的表示比較的表示為:
if(a==5)
{
printf("a等於5");
}
(9)怎麼判斷語句編譯不出錯擴展閱讀
C語言編程注意事項:
1、書寫標識符時,忽略了大小寫字母的區別。
2、將字元常量與字元串常量混淆。
3、忽略了變數的類型,進行了不合法的運算。
4、忽略了「=」與「==」的區別。
5、忘記加分號。
6、多加分號。
7、輸入變數時忘記加地址運算符「&」。
⑽ 如何快速查找C語言編譯時的錯誤
1、首先,我們啟動編譯軟體程序,今天我們以VC++6.0為例。
注意事項:
編譯語言是一種以編譯器來實現的編程語言。它不像直譯語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器碼,再加以運行。理論上,任何編程語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程序的應用有關。