c編譯錯誤
1、首先,我們啟動編譯軟體程序,今天我們以VC++6.0為例。
注意事項:
編譯語言是一種以編譯器來實現的編程語言。它不像直譯語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器碼,再加以運行。理論上,任何編程語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程序的應用有關。
B. C語言:下面的代碼為什麼會出現編譯錯誤應當怎麼改正
錯誤出在a=sum;這一句——因為構成C語言程序的基本單位是函數而不是C語句,這里的a=sum;不在任何函數中,所以編譯器無法處理而出錯。把它放到主函數中的printf("%d ",a(3,5));之前就可以了。函數外只能進行全局變數定義或聲明,而不能進行其他操作,所以把int (*a)(int, int); a=sum;兩句改成int (*a)(int, int)=sum;,讓它成為聲明變數a並初始化為sum也是可以的。你可以試試。
代碼文本:
#include "stdio.h"
int sum(int a, int b);
int (*a)(int, int);
int main(int argc,char *argv[]){
a=sum;
printf("%d ",a(3,5));
return 0;
}
int sum(int a,int b){
return a+b;
}
C. c語言編譯錯誤
int main(void){ main 改過來
D. c 編譯提示錯誤
樓主你好。首先我說下你的函數第一行報錯的問題。MAXLEN是你定義的一個宏,貌似不能把它作為形參(因為你已經把它定義成為宏)。你可以把後面一個形參改為int n,當然下面的MAXLEN也改為n,你只需要實參傳進來的是MAXLEN就OK。
然後我說下你這個函數可能存在的問題:
函數貌似開始要用malloc函數開辟一段內存(記得函數執行完把它釋放),因為沒有開辟內存,s++操作可能不能執行。還有你返回的是s-t,我想你的本意是想記錄輸入的字元個數,並把它返回吧,如果前面指針操作有問題(沒有開辟內存等引起的),那麼這兩個指針相減可能將被視為非法的。而你的函數返回值為int,可能會報錯。
int getline(char *s,int n) /*這一行提示錯誤!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
{
int k;
s=(char *)malloc(sizeof(char)*100);
char *t;
t=s;
int c;
while(--n>0&&(c=getchar())!=EOF&&c!='\n')*s++=c;/*這一行錯誤!!!!!!!*/
if(c=='\n')*s++=c;
*s='\0';
k=s-t;
free(s);
return k;
}
我試了一下,你的程序改了MAXLEN和這個都沒有報錯,但是也沒執行結果。你再看看吧,一家之言,僅供參考。希望對你有幫助。
E. c語言 編譯錯誤
#include<stdio.h>
#definer3
#definec4
voidsum_r(intar[][c]);//---宏定義r不能在這里當變數用,觀察你後續代碼,這個參數沒用,刪掉
voidsum_c(int[][c]);
intsum2d(int(*ar)[c]);
intmain(void)
{
intjunk[r][c]={{2,4,6,8},{3,5,7,9},{12,10,8,6}};
sum_r(junk);//
sum_c(junk);//
printf("Sumofallelements=%d ",sum2d(junk));
return0;
}
voidsum_c(intar[][c])//
{
intr1;
intc1;
inttot;
for(c1=0;c1<c;c1++)
{
tot=0;
for(r1=0;r1<r;r1++)//
{
tot+=ar[r1][c1];
}
printf("col%dsum=%d ",c1,tot);//
}
}
voidsum_r(intar[][c])
{
intr1;
intc1;
inttot;
for(r1=0;r1<r;r1++)
{
tot=0;
for(c1=0;c1<c;c1++)
{
tot+=ar[r1][c1];
}
printf("row%dsum=%d ",r1,tot);//
}
}
intsum2d(int(*ar)[c])
{
intr1;
intc1;
inttot=0;
for(r1=0;r1<r;r1++)//
{
for(c1=0;c1<c;c1++)
{
tot+=ar[r1][c1];
}
}
returntot;//
}
F. C語言編譯錯誤
在寫#define PI 3.1416 語句時
前面應加空格。
G. c語言編譯錯誤在哪裡
把abc定義成浮點型數據就好了
因為,整數在做除法時,是整除,不帶小數的,小數部分會捨去
double a,b,c ;
相應的後面的輸入scanf()中的參數也要改成%lf
H. c程序編譯錯誤
(1)語法問題,乘法表達錯誤。
k=1/(2n-1); 中 2N ---> 2*N
(2)主函數給個返回值(養成好習慣,因為根據編譯環境不同提示錯誤)
int main(){
...
return 0;
}
其他的沒有問題