数据类型
基本类型
整型
字符型
实型(浮点型)
构造类型
数据类型
构造体类型
共用体类型
枚举类型
指针类型
空类型
(1)基本类型还可以分解为其他类型,主要为整型、宇符型和浮点型。
(2)构造类型是根据已定义的一个或多个数据类型,用构造的方法来定义的。可以理解
为,一个构造类型的值由若千个“成员”或“分量”构成。每个“成员”都是一个基本类型或一
个构造类型。
C语言中构造类型包括:数组类型、结构体类型、共用体类型和枚举类型
(3)指针是C语言中一种特殊的,同时又具有重要作用的数据类型。
C语言的常量
直接常量
直接常量又分为整型常量,实型常量,字符型常量和字符串常量。
1.整型常量
整型常量即整数,包括正整数,负整数和零。C语言中,整型常量可以用十进制,八进制和十六进制表示。
2.实型常量
实型常量即实数,又称为浮点数。C语言中,实数只能用十进制形式表示,实数的表示方法有两种:小数形式和指数形式。
3.字符型常量
字符常量指单个字符,用一对单引号及其括号所括起的字符来表示。
4.字符串常量
字符串常量是由一对双引号“”括起来的零个或多个字符序列。
符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。
符号常量的使用,可以为编写程序提供很多好处;
(1)增加程序的可读性
(2)提高程序的可维护性
(3)简化程序代码
(4)方便数组的定义
C语言的变量
1.变量的定义
2.变量的初始化
3.变量的使用
整型变量
一个整型变量用来保存整数。
实型变量
C语言中实型变量分单精度(float型)和双精度(double型)两类。
字符型变量
字符型变量的值是字符常量,既用单引号引起来的单个字符
运算符和表达式
赋值运算符和赋值表达式
C语言中赋值运算符有“=”、“十=”、“一=”、“*=”、“/=”和“%=”等。用赋值运算
符将运算对象连接而成的表达式称为赋值表达式。
1.简单赋值运算符
最简单的赋值运算符就是“=”,它的作用是将一个数值赋给一个变量。
2.复合赋值运算符
在简单赋值运算符前面加上算术运算符就构成复合赋值运算符。
3.赋值表达式
在C语言中,赋值语句属于表达式语句。赋值表达式是由赋值运算符将一个变量和一个表达式连接起来的式子所组成的。
算术运算符和算术表达式
1.基本的算术运算符
基本算术运算符包括加减乘除和求余等运算
2.自增、自减运算符
C语言有两个特殊运算符“++”和“–”
3.算术运算符的优先级和结合性
C语言规定了运算符的优先级和结合性,单目运算符是右结合的,双目算术运算符是左结合的。
4.算术表达式
算术表达式是由算术运算符、运算对象和括号连接起来的式子,运算对象可以是常量、变量和函数等。
逗号运算符和逗号表达式
C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式。
求字节数运算符
运算符sizeof用于计算数据类型所占的字节数,它是一个单目运算符,优先级高于双目运算符。
数据类型转换
自动数据转换
不同类型的数据在一起运算时,编译系统会自动进行类型转换。
强制类型转换
强制类型转换是采用强制类型转换运算符将某种类型强制转换成指定的数据类型
代码
例2.1
#include <stdio.h>
int main(void)
{
printf("Programming is fun.\n");
printf("And Programming in C is even more fun!");
return 0;
}
例2.2
#include<stdio.h>
#define PI 3.14159
void main()
{
int r;
float v,f;
r=2;
v=4.0*PI*r*r*r/3.0;
f=4.0*PI*r*r;
printf("体积为:%f,表面积为:%f\n",v,f);
}
例2.3
#include<stdio.h>
int main()
{
char b,c,d,e;
b='\43';
c='\103';
d='\x2a';
e='\x41';
printf("b=%c,c=%c,d=%c,e=%c\n",b,c,d,e);
printf("\"good\0morning!\b\"!\n");
printf("\123456");
return 0;
}
例2.5
#include<stdio.h>
#define PRICE 20
int main()
{
int num,total;
num=10;
total=num* PRICE;
printf("总价格为:%d\n",total);
return 0;
}
例2.6
#include<stdio.h>
int main()
{
int a,b,c;
char ch='A';
a=10;
b=a+ch;
scanf("%d",&c);
printf("%d,%d,%d,%c\n",a,b,c,ch);
return 0;
}
例2.7
#include<stdio.h>
int main()
{
int a,b,c,d;
unsigned long e;
a=5;b=6;e=10;
c=a+e;
d=b+e;
printf("c=%d,d=%d\n",c,d);
return 0;
}
例2.8
#include<stdio.h>
int main()
{
short int a, b;
a = 32767;
b = a + 10;
printf("a=%d, b=%d\n", a, b);
return 0;
}
例2.9
#include<stdio.h>
int main()
{
float a=1234.56789;
double b=1234.567895678;
printf("a=%f,b=%f\n",a,b);
return 0;
}
例2.10
#include<stdio.h>
int main()
{
char c1,c2;
c1='A';
c2=65;
printf("%c,%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
return 0;
}
例2.11
#include<stdio.h>
int main()
{
char c1,c2;
c1='A';
c2='B';
c1=c1+32;
c2=c2+32;
printf("%c,%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
return 0;
}
例2.13
#include<stdio.h>
int main() {
int number, a, b, c;
number = 123;
printf("输入的3位数为:%d\n",number);
a = number/100;
b = (number - a * 100) / 10;
c = number % 10;
printf("反序数是:%d%d%d\n",c,b,a);
return 0;
}
例2.14
#include <stdio.h>
int main()
{
int i,j=7;
float k=5;
i=(j=j+2,j/k);
printf("i=%d\n",i);
return 0;
}
例2.15
#include<stdio.h>
int main()
{
printf("char类型占%d字节\n",sizeof(char));
printf("short int类型占%d字节\n",sizeof(short int));
printf("int类型占%d字节\n",sizeof(int));
printf("float类型占%d字节\n",sizeof(float));
printf("double类型占%d字节\n",sizeof(double));
return 0;
}
例2.16
#include<stdio.h>
int main()
{
int a, b;
a = sizeof(3 + 5.0);
b = sizeof 3 + 5.0;
printf("%d,%d,%d\n", a, b, sizeof("china"));
return 0;
}
例2.18
# include<stdio.h>
int main()
{
int a = 3, b = 4;
float c;
c = (float)(a + b) / 2;
printf("c=%f\n", c);
return 0;
}