我的代碼為什麼編譯器無法理解
『壹』 求大神檢查代碼的語法問題,下面有我的代碼,以及編譯器顯示錯誤的原因,但我實在搞不懂為什麼
#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i,t;
int is(int number); /////這是函數聲明,不能放在函數體中間,要放在外面
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++){
if(is(i)==1){
printf("%d ",i);
t++;
}
if(t==0) printf("此區間沒有符合要求的數");
printf("\n");
////////這個地方顯然少了一個「}」,main有一個「{」,for有一個,盯扒if有一個,所以「}」的數目應該是三個
return 0;
}
int is(int number)
{
int s,h,l,y;
s=0;
h=number;
while(h!=0){
y=h%10;
s=s+pow(y,3);
h=h/10;
}
if(number==s) l=1;
else l=0;
return l;
}
其他的問題好像就沒了,語法問題就這些吧,更改後的代碼如下:
#include<stdio.h>
#include<math.h>
int is(int number);
int main()
{
int m,n,i,t;
scanf("%d %d",&m,&n); /拍則察/ 輸入的時候,以空格為分隔符
for(i=m;i<=n;i++){
if(is(i)==1){
printf("%d ",i);
t++;
}
}
if(t==0) printf("此區間沒有符合要求的數");
printf("\n");
return 0;
}
int is(int number)
{
int s,h,l,y;
s=0;
h=number;
while(h!=0){
y=h%10;
s=s+pow(y,3);
h=h/襲茄10;
}
if(number==s)
l=1;
else
l=0;
return l;
}
『貳』 請教無法編譯是怎麼回事
「無法編譯」的原因可能很多種。能詳述一下你的問題嗎?
在有更多的信息之前,大概列一下「無法編譯」的可能情況:
找不到「編譯器」。這種通常是在「命令行」或者「shell」情況下出現。在「集成環境(IDE)下通常較少出現。
解決方法:(1)安裝必要的編譯器。(2)如果已有編譯器,把編譯器的可執行文件的路徑,加入環境變數「PATH」。(3)加入必要的其它設置,如「鏈接庫」的位置。
源程序有錯誤。
解決辦法:根據出錯信息,排除源程序的錯誤。
缺乏必要的「鏈接庫」。
解決方法:找到需要的鏈接庫,並適當安裝。
最好能針對你實際的問題,對症下葯。有問題可以繼續交流,謝謝。
『叄』 我是新手,正確的代碼在我的電腦為什麼會出現錯誤的提示!同樣的編譯
windows和mac的電腦會有些差別,其次就是電腦系統的編譯器錯誤比如說一個代碼可以運行另一個就編譯錯誤,版本漏洞是難免的,最後就是不要把代碼輸錯了。
『肆』 代碼沒有錯誤為什麼編譯不出來
編譯器是一種翻譯程序,它用於將源語言(即用某種程序設計語言寫成的)程序翻譯為目標語言(即用二進制數表示的偽機器代碼寫成的)程序。後者在windows操作系統平台下,其文件的擴展名通常為.obj。該文件通常還要經過進一步的連接,生成可執行文件(機器代碼寫成的程序,文件擴展名為.exe)。通常有兩種方式進行這種翻譯,一種是編譯,另一種是解釋。後者並不生成可執行文件,只是翻譯一條語句、執行一條語句。這兩種方式相編譯比解釋運行的速度要快得多。
2、 編譯過程的5個階段:詞法分析;語法分析;語義分析與中間代碼產生;優化;目標代碼生成。
3、 在這五個階段中,詞法分析的任務是識別源程序中的單詞是否有誤,編譯程序中實現這種功能的部分一般稱為詞法分析器。在編譯器中,詞法分析器通常僅作為語法分析程序的一個子程序以便在它需要單詞符號時調用。在這一編譯階段中發現的源程序錯誤,稱為詞法錯誤。
4、 語法分析階段的目的是識別出源程序的語法結構(即語句或句子)是否錯誤,所以有時又常為句子分析。編譯程序中負責這一功能的程序稱為語法分析器或語法分析程序。在這一階段中發現的錯誤稱為語法錯誤。
5、 C語言的(源)程序必須經過編譯才能生成目標代碼,再經過鏈接才能運行。PASCAL語言、FORTRAN語言的源程序也要經過這樣的過程。通常將C、PASCAL、FORTRAN這樣的語言統稱為高級語言。而將最終的可執行程序稱為機器語言程序。
6、 在編譯C語言程序的過程中,發現源程序中的一個標識符過長,超過了編譯程序允許的范圍,這個錯誤應在詞法分析階段發現,這種錯誤通常被稱作詞法錯誤。
詞法分析器的任務是以詞法規則為依據對輸入的源程序進行單詞及其屬性的識別,識別出一個個單詞符號。
詞法分析的輸入是源程序,輸出是一個個單詞的特殊符號,稱為Token(標記或符號)。
語法分析器的類型有:自下而上、自上而下。常用的語法分析器有:遞歸下降分析方法是一種自上而下分析方法, 算符優先分析法屬於自下而上分析方法,LR分析法屬於自下而上分析方法等等。
通常用正規文法或正規式來描述程序設計語言的詞法規則,而使用上下文無關文法來描述程序設計語言的語法規則。
語法分析階段中,處理的輸入數據是來自詞法分析階段的單詞符號。它們是詞法分析。
『伍』 C語言同一段代碼,同樣的文件,編譯器為什麼運行結果不一樣
有如下幾種可能:
1 代碼運行的平台硬體不同。
不同的CPU,如嵌入式CPU,intel CPU,以及IBM的CPU,在硬體最底層就是不同的,而C語言是一門和底層相關性極大的語言,在不同的硬體上運行出不同結果是很正常的。
2 代碼運行的系統不同。
相同CPU在不同操作系統上跑相同代碼時,一樣會出現不同的結果。這是由於系統底層的實現不同造成的。比如Linux和Windows,在底層處理上就有一定的差異。
3 編譯器不同,同時代碼中使用了C規范未定義規則的語句。
C語言規范並沒有對C語言的所有行為做定義,所以相同語句,不同編譯器的運行效果可能有所不同。比如同樣的sizeof(int),在16位編譯器上結果為2,而32位編譯器上就會是4。
4 代碼獲取到的外部數據不同。
比如運行代碼時獲取到的其它輸入不同,包括程序中獲取的環境變數,實時信息,以及各種外部輸入等,均有可能出現不同。
比如在做隨機數時,如果以當前時間設定隨機數種子,由於每次的時間是不同的,同一個程序每次運行的結果都是不同的。
『陸』 我寫的代碼為什麼編譯失敗
編譯器下面會標出你的錯誤
『柒』 C程序在VC++6下編譯出現結果讓人難以理解!!
因為你在VC下編寫的程序用到了VC的函數庫,比如socket這個套介面函數在VC中的頭文件時WinSock.h 而到了Linux系統下的編輯器g++中 就是netinet/in.h了 當然不會通過編譯。而且VC編譯器把你得程序生成目標文件 連接函數庫這些過程都給你做好了。但是在別的編輯器下 比如g++這些都要你自己來寫makefile文件來完成。