2. Datatypes
• Types of Data you can use in C without
explicit definition by the user
– Arithmetic
• Integer domain
• Real domain
– Strings
• Length one - character
• Length greater than one - array of characters
– Sequence of characters
3. Today’s Lecture Contents
• Built-in Types in C
• You can define your own data types
• Construct called typedef
• Later in this course
• User defined data type
• Creative Problem
5. Variations
• int
– signed, unsigned, long, short
• float
– single and double precision
• Size of “short int” less than or equal to just
“int” which is less than or equal to “long int”
• The builtin function sizeof() shall return the
size of the types.
6. Example Program
•
•
•
•
•
•
•
•
•
•
•
•
#include <stdio.h>
/* Program to print sizeof all datatypes */
main() {
printf("sizeof int is %dn",sizeof(int));
printf("sizeof short int is %dn",sizeof(short int));
printf("sizeof long int is %dn",sizeof(long int));
printf("sizeof unsigned is %dn",sizeof(unsigned));
printf("sizeof short unsigned is %dn",sizeof(short unsigned));
printf("sizeof long unsigned is %dn",sizeof(long unsigned));
printf("sizeof float is %dn",sizeof(float));
printf("sizeof double is %dn",sizeof(double));
}
7. Output
• Apple I Mac system - Intel Core 2 Duo
Architecture
• Compiler gcc-4.0.1 version
sizeof int is 4
sizeof short int is 2
sizeof long int is 4
sizeof unsigned is 4
sizeof short unsigned is 2
sizeof long unsigned is 4
sizeof float is 4
sizeof double is 8
8. What does this mean?
• int i; // Allocated to memory 0x1000
• It has 4 bytes
–
–
–
–
–
B3,B2,B1,B0
B3 is most significant byte 0x1003
B0 is least significant byte stored in 0x1000
B1 is stored in 0x1001
B2 is stored in 0x1002
• This is called little-endian storage - Intel
machines use this
9. What does this mean?
• int i; // Allocated to memory 0x1000
• It has 4 bytes
–
–
–
–
–
B3,B2,B1,B0
B3 is most significant byte 0x1000
B0 is least significant byte stored in 0x1003
B1 is stored in 0x1002
B2 is stored in 0x1001
• This is called big-endian storage - SUN
processors - Sparc use this
10. Constants in C
• Remember the #define PI in the Area of the
circle problem?
• That was a “real” constant
• 0, 1, 245, 623, 987 - are decimals
• 0, 01, 0245, 0623 - are octals
• Begin with a “0”
• So 125 is not equal to 0125
• 0987 is illegal - why?
• 0x0, 0x1, 0xABCD - are hexadecimals
• 0X0, 0X1, 0XABCD - are also correct way of
representing them.
11. Wrong ways for integer constants
• 12,245
– no comma to enhance readability
• 36.0
– no dots //Not integer constant
• 10 20 30
– no space in between
• 123-45-6789
– no hyphen to enhance readability
• 0900
– not decimal
12. Wrong ways for octal constants
• 743
– Should start with 0
• 05280
– Illegal digit “8”
• 0777.77
– No dots allowed for octal integers
13. Unsigned and Long Integer
Constants
•
•
•
•
•
•
•
50000U - decimal unsigned
123456789L - decimal long
123456789UL - decimal unsigned long
0123456L - octal long
0777777U - octal unsigned
0x5000ABCU - hexa unsigned
0XFFFFFUL - hexa unsigned long
15. Floating Point Constants
• 5.026 X 10-17
– 5.026E-17
– .5026E-16
– 50.26E-18
– .0005026E-13
Beware: Underflows and Overflows because of
Finite precision arithmetic
16. Character Constants
•
•
•
•
•
•
ASCII code - introduced
‘A’ is an example
‘a1’ is wrong
sizeof(char) is 1 byte
Declared as char c;
Then assign as
– c = ‘A’ //Only single quotes
17. Escape Sequences
•
•
•
•
•
•
•
‘n’ - Line feed
‘t’ - Tab
‘r’ carriage return
Where do you use?
Get an apostrophe ‘’’
Double quote ‘”’
‘0’ is the null character
18. ASCII values
char c;
c = ‘A’;
c = ‘101’; //Octal of 65
c = ‘x41’; //Hexa of 65
c = ‘X41’;
All are same. The ASCII value of
character c is decimal 65
20. Statements
•
•
•
•
{
Simple and compound statements
Expression and control statements
if (condition) S1 else S2 - Control
a = b+c; expression
pi = 3.141593;
area = pi * radius * radius;
} // A compound statement
21. Test Your Understanding
• Which of the following are not valid identifiers
–
–
–
–
–
–
–
–
record1
1record
$tax
file_3
File_3
return
Name_and_address
Name-and-address
22. Test Your Understanding
• Which of the following are not valid identifiers
– record1
– 1record
–
–
–
–
–
–
$tax
file_3
File_3
return
Name_and_address
Name-and-address
23. Test Your Understanding
• Which of the following is not a ANSI C
language keyword?
– void
– enum
– goto
– function
24. Test Your Understanding
• Which of the following is not a ANSI C
language keyword?
– void
– enum
– goto
– function
25. Test Your Understanding
• What will be the result of the following
program if the inputs are 2 and 3
main() {
float a,b;
scanf(“%d %d”,&a,&b);
printf(“%f %f”,a,b);
}
26. Test Your Understanding
main() {
float a,b;
scanf(“%d %d”,&a,&b);
printf(“%f %f”,a,b);
}
Ans: It compiles without any problem. It will be
garbage. What does this tell?
27. Test Your Understanding
main() {
float a,b;
scanf(“%d %d”,&a,&b);
printf(“%f %f”,a,b);
}
Ans: The compiler only catches some type of bugs. You
have to take much care. Just because your program
compiled without errors/warning, you are not
guaranteed of correct results.
28. Test Your Understanding
• What will be the result of the following
program if the inputs are 2 and 3
main() {
int a,b;
scanf(“%d %d”,&a,&b);
printf(“%f %f”,a,b);
}
29. Test Your Understanding
• Junk will be printed for this too.
main() {
int a,b;
scanf(“%d %d”,&a,&b);
printf(“%f %f”,a,b);
}
30. Test Your Understanding
• What will be the result of the following
program
main() {
int a,b;
a = 10; b = 20;
printf(“%d ”,a,b);
}
32. Conclusion
• Compilers do not catch most of your
bugs
• Reasons are many
– Attend the 5th semester Language
Translator BTech Core course in CSE Dept
• You train yourself to be a CAREFUL
PROGRAMMER
33. Creative Problem
• Suppose you are using a program that
reads in a large English text file as input
and processes it. The program for some
reason does not like a set of words and
whenever it sees the same in your text
file it halts and outputs “Error”. It is so
angry that it does not say what the word
is and which line it occurred or any
other info.
34. Creative Problem
• You do not have a list of offending
words. Devise a strategy to identify the
first offending word in your text. Express
the efficiency of your strategy in terms
of the number of words in the input text
file.
35. Thank You
• SAARANG Time :-)
– Do not go home - it is your festival
– No lab this week
– People who have pending work to be done
can visit labs on Monday and Tuesday to
finish backlogs.
– Lab exercises 1 and 2
• Grades to be finalized this week.