C Compiler, Segmentantion fault
Άλκης Αργυρόπουλος
aaalex at ath.forthnet.gr
Sat Mar 31 17:23:47 EEST 2007
On Saturday 31 March 2007 1:37:57 pm John Salatas wrote:
> το κάνω compile
> john at salatas:~/Projects/C/limits> cc limits.c -o limits
>
> και στην εκτέλεση παίρνω τα εξής:
> john at salatas:~/Projects/C/limits> ./limits
> Δώσε τον signed short int (min: -32768, max: 32767): 1
> Δώσε τον unsigned short int (min: 0, max: 65535): 1
> Δώσε τον signed long int (min: -2147483648, max: 2147483647): 1
> Δώσε τον unsigned long int (min: 0, max: 4294967295): 1
> Δώσε τον signed int (min: -2147483648, max: 2147483647): 1
> Δώσε τον unsigned int (min: 0, max: 4294967295): 1
> Ο επόμενος signed short int του 0 είναι ο 1
> Ο επόμενος unsigned short int του 1 είναι ο 2
> Ο επόμενος signed long int του 1 είναι ο 2
> Ο επόμενος unsigned long int του 1 είναι ο 2
> Ο επόμενος signed int του 1 είναι ο 2
> Ο επόμενος unsigned int του 1 είναι ο 2
> Segmentation fault
> john at salatas:~/Projects/C/limits>
To output που παίρνεις για την signed short μεταβλητή σου, δεν έχει σχέση με
την τιμή που της έδωσες.
http://www.cplusplus.com/reference/clibrary/cstdio/scanf.html
Άλλαξε τα δύο πρώτα scanf σε:
scanf("%hd", &intSignedShort);
...
scanf("%hu", &intUnsignedShort);
Για τον ίδιο λόγο, αν και δεν σκάει, άλλαξε τα δύο scanf που αφορούν long σε:
scanf("%ld", &intSignedLong);
...
scanf("%lu", &intUnsignedLong);
Και για λόγους προτίμησης :-) , ξέχνα την scanf και παίξε καλύτερα με την
fgets και μετά με την atol.
/Άλκης
More information about the Linux-greek-users
mailing list