In this segment, we'll talk about the structure of the program that includes declarations and an especially important operator, assignment, and how it relates to expressions as well. All of this is wrapped up with types. So we're going to talk in detail in the next few segments about the type logic of the C programming language. Now, types. Some of the types we've seen already are int and double. There will be other simple types like char, float, unsigned, and then there'll be more complicated types later on that involve structs. For the moment, we'll concentrate on these two distinct types int which is in effect an integer type supposed to represent precisely the whole numbers and double which is a floating point type which is supposed to represent scientific numbers with a very large range. Now, a simple declaration is going to look like a type followed by an identifier with a semicolon. So here we see a simple example on this side. Then a more complex example is a type identifier followed by the equal sign, the equal character, and an initializer. This is not assignment, this is initialization. The class and the declarations. Declarations by the way occur at the head of a body of code or at the head of the program. Here we have again a very simple example, int, the variable a, assign two. So there we mean that we're going to in that piece of code treat a as something that can get different values as long as they're integer, as long as they fit within the type int, and we'll explain more about what it means to fit in the type int, and two. Finally, we can have a more complicated type declaration in which we have a list. So here's one of those, int a assigned or initialize three comma. So it's a comma separated list. It can be arbitrarily long. This has two variables, one initialize to three and one initialize to five. Okay, let's restart. Here we have a piece of code that I already typed in. It's supposed to show you an example of the use of elementary declarations and assignments. In this piece of code, again at the head of what's called the block, the block starts with open brace, we have a declaration list with initializers. So a is of the type int, b is of the type int, c is of the type int and if we think about what's stored in their memory location a is five, b is seven, c is six. We're going to do a simple averaging and we're going to use a variable average and then average is going to be initialized to 0.0, though that may be unnecessary because it's just good practice to initialize variables, but sometimes when you forget to do that can lead to errors if you allow the system to do the initialization for you. Here's a print f, that'll show us that we assigned what we've assigned. Then we're going to do an average and in this average we see a plus b plus c. Normally, that's integer expression. We divide by 3.0, why? Because if we divide by three, this will be purely an integer division and we may have a rounding error. But we want it to be done in double, we're going to talk more about why this occurs as a double. This expression will occur as a double so this is overall an assignment expression, but conversion would have been if there was a three, we would make this integer expression and then assign it to a double. In this case, this is a double expression assigned to a double, so there's no conversion. Again as I say, difficult topic, very tricky we'll talk a lot more about conversion. Here we just print it. So it's a very naive program. Let me escape, and I compiled it already and let me run it. Sure enough a is five, b is seven, c is six and the average is indeed the floating point number 6.0.