لدي سؤال .. ولو أن لدي الكثير من الأسئلة :lol: ..
كيف يمكنني تعريف دالة في الـC .. بنوع float ..
float function(float x) { return 5.5; }تحياتي ^_^
لدي سؤال .. ولو أن لدي الكثير من الأسئلة :lol: ..
كيف يمكنني تعريف دالة في الـC .. بنوع float ..
float function(float x) { return 5.5; }تحياتي ^_^
تم تعديل هذه المشاركة بواسطة bahbah في 23 نوفمبر 2013 في 20:08
لم أفهم السؤال هذه المرة :)
C++ and Java, say, are presumably growing faster than plain C, but I bet C will still be around. ― Dennis Ritchie
~OoO~________--------------------------------------------________~OoO~
من مواضيعي :
هههههه :lol: ..
تكتب الدالة بهذا الشكل ..
int function(void){ return 0;}أنا أريد بدل أن تقوم الدالة بإرجاع قيمة رقمية من نوع int ..
أريدها ترجع قيمة بالفاصلة كا 4.5 ..
float function(void){ return 4.5;}ولكن هذا يعتبر خطأ في نوع الدالة لا أعلم ما السبب
تحياتي ^_^
تم تعديل هذه المشاركة بواسطة bahbah في 23 نوفمبر 2013 في 20:16
الدالة صحيحة، مانوع الكومبايلر الذي تستخدمه، وأين يحدث الخطأ بالضبط
#include <stdio.h>
float func (void)
{
return 4.9;
}
int main (void)
{
printf("%.1f\n", func());
return 0;
}اه الدالة صحيحة فعلاً :lol: ..
الخطأ يظهر عندي في كومبايلر GNU GCC .. عندما أريد أن تأخذ الدالة قيمة أي بدل void --> float num
تحياتي ^_^
@bahbah
الخطأ كما يلي :
أنت تعرف الدالة :
float function(float x) { return 5.5; }ثم عند الاستدعاء تكتب :
function();
فقط بدون تمرير وسيط .. والخطأ الذي يظهر عندك (على ما أظن )
X.c: In function `main': X.c:4: too few arguments to function `function'
وهو يقول : عدد أقل من اللازم من الوسطاء تم تمريرها إلى الدالة function
في المرات المقبلة أرفق نص الخطأ إن ظهر لك أخطاء :)
بالتوفيق
لا أخي مصطفى ..
لا أظن أن هذه المشكلة فالرسالة التي تظهر مختلفة ..
هذه هي الرسالة ..
وهذا أمر الإستدعاء ..
المشكلة ليست في الإستدعاء بل المشكلة أنه لا يتعرف على نوع الدالة ..
تحياتي ^_^
اكتشفت الخطأ .. ( أو بالأحرى وجدته )
بدايةً :
عندما نواجه مشكلة لا يجب التركيز على موضع واحد وافتراض أن الخطأ فيه .. يجب إرفاق الكود كاملاً ( أقصر كود يمكنه التسبب بالمشكلة )
والحمد لله وجدت المشكلة هنا .. (دائماً استخدم google :) )
int main()
{
funct(5.5);
return 0;
}
float funct(float x){return 5.5;}المهم ..
في لغة C يجب تعريف الدوال قبل استخدامها ..
إن لم ترغب بكتابة جسم الدالة فوراً .. فعليك تعريف الـprototype .. يعني نفس اسم الدالة والقيمة المعادة وانواع الوسطاء ولكن بدون أقواس {} ونضع فاصلة منقوطة ..
المهم ... كما في الرابط السابق
عند استدعاء دالة غير معروفة يفترض المترجم أنها تعيد int .. وعندما يكتشف انها معرفة بحيث تعيد float فسيحدث تضارب ..
يمكنك حل المشكلة بعدة طريق منها :
1-وضع جسم الدالة قبل االدالة التي استدعتها :
float funct(float x){return 5.5;}
int main(){ funct(5.5); return 0;}2- استخدام prototype
float funct(float );
int main(){ funct(5.5); return 0;}
float funct(float x){return 5.5;}هل تمت الإجابة :)
بالتوفيق :)
نعم قد حلت المشكلة :) .. كانت المشكلة في التضارب كما قلت .. شكراً لك :lol:
باقي الدوال التي عندي كلها من نوع int .. وكانت تعمل بشكل ممتاز ..
ولكن عندما جربت أن أغير نوعها إلى float حدثت المشكلة !!
تحياتي ^_^