這種事情當然經常發生啦。。。。
編譯只是靜態檢查。。。。。
如果你的程序存在
運行時錯誤的話。
例如:
RuntimeException的話,當然編譯時檢查不出來啦。
具體問題具體分析,沒有源代碼,是無法發現到底那裡錯誤了
㈡ C語言程序問題,編譯成功可卻不能運行,這是為什麼
如果你的循環中的i值變化范圍沒有問題,則修改你的數組定義為:double err[502],B,W[502],W2[502],j,beta[501];你的原始定義都少了一個數組元素,會導致下標越界,進而引發運行時錯誤。
㈢ 為什麼c語言編譯明明成功了運行時卻說編譯失敗
這個程序是沒有問題的,在VC6.0下是完全可以運行的。
編譯成功的話,運行應該也是可以的。
只有你保證你工程中就一個main函數。
另外你運行時編譯失敗的提示信息是什麼,可以貼出來。
㈣ 非常簡單C語言 問題 編譯成功 但是運行失敗
#include<stdio.h>
voidmain()
{
inta;
printf("你還愛我不?1isyes。。。2isno ");
do
{
scanf("%d",&a);
if(a==1)
printf("真聽話。。。。 ");
else
{
printf("怎麼可以這樣呢??再來一遍!! ");
printf("你還愛我不? 1isyes。。。2isno");
}
}
while(a!=1);
}
㈤ c++程序編譯成功,運行卻失敗了。。求助
初步判斷,程序錯誤:
1,你定義了一個Student的數組,三個元素。你定義的時候只給了第一元素進行帶參數的構造函數,其他的都是使用默認構造,導致第二第三元素的指針指向常量字元串。這導致你在stu[2].setMember函數調用出錯。
2,數組元素默認從0開始,所以,你最後cout stu[3]已經越界了。。。
作如下修改:
void Student::SetMember(int m,char *n)
{
age=m;
if(n)
{
name=new char[strlen(n)+1];
strcpy(name,n);
}
//strcpy(name,n);
}
char* Student::Getname(){
if( !name )
return "unnamed";
else
return name;
}
你再試試。。。
㈥ C語言編寫的程序編譯成功但運行失敗
printf("%s",*name);//很明顯是這個錯了,為什麼要加*號
//改為printf("%s",name);應該就可以
㈦ Java 編譯成功但運行失敗
(1)設置系統變數JAVA_HOME,使其值是您想要的那個版本的JDK目錄。
(2)設置系統變數CLASS_PATH,使其值為「.;%JAVA_HOME%/lib/tools.jar」
(3)在系統變數PATH的前面增加「%JAVA_HOME%/bin;」。
這樣就可以了,如果還不行,就有可能是您多次安裝過不同的Java版本而造成的,可以按下面方法解決:
Windows操作系統的注冊表中
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit和
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
中會看到多個版本,刪除多餘的,更改這兩個項目下的
CurrentVersion鍵值為你當前的那個版本即可.
㈧ 為什麼我的程序編譯完成後不能運行
首先確定jdk和自己的系統一致 X86對應32 X64對應64在 此次下載
win7環境變數配置 (Xp等系統略有不同)
1.右鍵計算機 —> 屬性 —> 左邊的「高級系統設置」 —> 「高級」選項卡 —> 下面「環境變數」系統環境變數
變數名 值
classpath 點分號默忘記了-----》 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME\lib\tools.jar;
path 點分號默忘記了-----》 .;%JAVA_HOME%\bin
上面之間復制 .;%JAVA_HOME% 是調用jdk的安裝路徑
這樣 升級jdk後 只需要修改jdk版本號就ok了 即只需要改一個變數值即JAVA_HOME的
下面的變數名復制 安裝路徑復制
JAVA_HOME F:\Program Files\Java\jdk1.6.0_31
在運行 java和javac命令 正常則為成功
導致運行找不到文件的問題
第一種情況
首先在確定文件名 是否有隱藏後綴名的問題 即文件名實際是X.java.txt 出現這種情況就要 修改操作如下
win7 在控制面板(大圖標模式) 找文件夾選項 在點擊查看 取消以勾選的隱藏已知文件的擴展名
Xp 把桌面我的電腦打開 在彈出對話框上面找到文件夾選項 後面操作基本相似然後修改 文件後綴名(擴展名)
第二種 情況 范琺頓貉塥股舵癱罰凱 運行也可以使用下面的 javac 和java命令
你jdk安裝在c盤 而文件在其他盤 導致的這時dos界面運行命令應該先是
X: X代表盤符 即進入X盤
cd/X 這X代表文件夾名 進入文件夾
在運行 javac x.java x.java是文件名 編譯文件檢測語法錯誤
java x x 代表文件名 但沒有擴展名
另外可以下載eclipse 運行java
這樣就完成了
㈨ c語言編程,編譯成功,但是調試失敗~!!怎麼回事。。求助~~
樓主你好!
你是不是發現編譯沒有報錯!但是一旦運行就會進入異常而中斷報錯!
我通過調試發現是棧溢出而造成的異常中斷!
這個問題還得從你的 float x[60000][15] 說起。且不算後面定義的變數,通過計算我們知道大概將近3.6M左右!
這個設計到程序的堆棧問題!不知道你是否了解程序的反匯編,簡單的說,每個程序都有自己的棧,你定義的局部變數就在這個棧上!而這個棧不是無限的大的,在Windows下,棧是向低地址擴展的數據結構,是一塊連續的內存的區域。這句話的意思是棧頂的地址和棧的最大容量是系統預先規定好的,在WINDOWS下,棧的大小是2M,如果申請的空間超過棧的剩餘空間時,將提示overflow!具體可以去了解一下程序的反匯編!
因此,你代碼本身沒有錯誤,但是運行不起來是棧溢出了!
如果,你還是想要分配60000個15個成員float類型的數值,那你就得使用malloc來申請空間,malloc申請的空間是在堆上的,malloc函數你自己可以去了解,這個跟棧是不一樣的,有興趣可以去了解堆和棧的區別!
以上是我的看法,希望我的回答對你有幫助!
㈩ 這個JAVA程序編譯成功,運行失敗。
這個程序派生自Applet,屬於Html嵌入式開發程序
用命令行啟動這個程序有三種方式
1.加上main方法,用Application方式啟動
2.嵌入網頁中,用appletviewer HelloWorldApplet.html命令啟動
3.在程序頂端加入
//<applet code=HelloWorldApplet width = 100 height = 50>
//</applet>
然後用appletviewer HelloWorldApplet.java命令啟動