2012-09-21 28 views
2

我必須在C中使用eclipse。我寫了一個簡單的程序,但我遇到了一個printf命令無法正常工作的問題。任何想法? 下面是代碼:在Eclipse中的printf

#include <stdio.h> 
void change(double *x, double *y) 
{ 
double help = *x; 
    *x = *y; 
*y = help; 
return; 
} 

int main() 
{ 
double x=0, y=0; 

printf("please give a value to a \n "); 
scanf("%f",&x); 
printf("please give a value to b \n"); 
scanf("%f",&y); 

printf("x=%.2f\t y=%.2f\n",x,y); 
printf("will give \n"); 
change(&x,&y); 
printf("x=%.2f\t y=%.2f\n",x,y); 
return 0; 
} 

所以問題是,我dont't得到這個第一printf

+0

獲取printf的含義是什麼? –

+1

將你的'double's改爲'float's或使用'%lf'。 '%f'只適用於'float'; '%lf'只用於'double'。 – nneonneo

+2

使用double時,scanf和printf之間存在一個醜陋的區別:在scanf中使用'%lf'。和printf中的'%f'。 – SKi

回答

3

您所有的值都是double,您必須使用%lf。 Buut你正在使用調用未定義行爲的%f

在您的scanfs和打印件中將%f更改爲%lf

+0

它不能解釋爲什麼它在Visual Studio上工作? – Engine

+0

當我嘗試調試程序scanf oder%lf%f不是一個問題時,問題是爲什麼即使沒有%lf或%f,第一個printf也不起作用?和程序是正確的我的問題是爲什麼eclipse不能正確運行它? 再次感謝您的幫助 – Engine

+0

我在您的問題/評論中沒有看到任何與VS相關的問題。將不正確的格式說明符傳遞給printf是未定義的,因此可能會發生任何事情。 –