Hi all, this is probably the first time I have ever actually asked a question on the board, so Ill give it my best.
This is a simple homework assignment, and I have pretty much finished except for a weird bug that won't go away. The point of the assignment is dealing with how to store data in a much smaller fashion, what I am doing is taking input from the user, dealing with a students record of some sort. It stores the persons current age, grade, gender, and current gpa al in a 16bit integer (short on my system thats why I used it). Well every thing is fine except that the first value I read in (Age) is always a 0, no matter what I enter. The code and a sample run below
Code:#include <stdio.h> #include <stdlib.h> #include <ctype.h> #define AGE_MASK 0xF000; #define GRADE_MASK 0x0F00; #define SEX_MASK 0x0080; #define GPA_MASK 0x007E; int main() { unsigned short studentinfo, age, grade, sex, gpa; unsigned char gender; printf("Please enter the students Age, Grade, Sex as 'M' or 'F',\n"); printf("and GPA without the decimal point.\n"); /* scanf(" %u %u %c %u", &age, &grade, &gender, &gpa); printf("%u %u %c %u\n", age, grade, gender, gpa);*/ printf("AGE: "); scanf(" %u",&age); printf("Grade: "); scanf(" %u",&grade); printf("Sex: "); scanf(" %c",&gender); printf("GPA: "); scanf(" %u",&gpa); printf("%u %u %c %u\n", age, grade, gender, gpa); if( isalpha(gender) != 0) { gender = toupper(gender); } else { printf("Error: You need to enter a character for sex\n"); exit(EXIT_FAILURE); } if( gender == 'M') { sex = 1; } else if( gender == 'F' ) { sex = 0; } else { printf("Error: You need to enter M or F for the students sex\n"); exit(EXIT_FAILURE); } age = age - 3; studentinfo = 0; studentinfo |= (age << 12) & AGE_MASK; studentinfo |= grade << 8 & GRADE_MASK; studentinfo |= (sex << 7) & SEX_MASK; studentinfo |= (gpa << 1)& GPA_MASK; printf("%u\n",studentinfo); printf("%u\n",age); exit(EXIT_SUCCESS); }Code:Please enter the students Age, Grade, Sex as 'M' or 'F', and GPA without the decimal point. AGE: 14 Grade: 10 Sex: F GPA: 35 0 10 F 35 55878 65533
If you have any ideas let me know, I just don't understand why its getting 0 every time it reads the first value.



LinkBack URL
About LinkBacks


