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