|שאלה\בעיה| קליטת מספר בעל 11 ספרות ויותר -שפת C- MVS - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

|שאלה\בעיה| קליטת מספר בעל 11 ספרות ויותר -שפת C- MVS


DancingBear

Recommended Posts

שלום, לאחר כתיבת פונקציה כלשהי שמחפשת כמה פעמים מופיע מספר כלשהו במספר נתון נתקלתי בבעיה כאשר הזנתי מספר בעל ספרות רבות, יכול להיות שאני טועה בהגדרת ההזנה ויכול להיות שזה באג, אין לי מושג.

מתברר שהמספר שאני מזין אפילו לא נשמר בצורה תקינה, בלי קשר לפונקציה או לקוד, אפילו בקוד הנ"ל :-



#include <stdio.h>

int main()

{

long int n;

scanf("%ld", &n);

printf("%ld", n);

return 0;}

כאשר אני מזין קלט של n בעל ספרות קטנות מ11 אני מקבל את מה שביקשתי, למשל אם הזנתי 1111 אקבל 1111

אך במקרה ואני מזין n גדול מ11 ספרות אקבל משהו חסר משמעות כמו -1773790777

למה זה קורה? :S

קישור לתוכן
שתף באתרים אחרים

מה זה MVS?

long int מוגדר להיות לפחות 32 ביט, כלומר מקסימום 2 בחזקת 31 (או בחזקת 32, אם זה unsigned). במערכות מסויימות זה 32 ביט בעוד שבמערכות אחרות זה 64 ביט. אתה יכול לבדוק בקלות את הגודל במערכת שלך באמצעות sizeof.

בשביל להבטיח 64 ביט, תשתמש ב-long long int, אבל אז צריך לקלוט ולהדפיס באמצעות lld ולא רק ld.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...