1 基本类型
char 、 short int 、 int 、 long int 、 float 、 double
#include <stdio.h>//基本数据类型的学习和使用
//char short int long float doubleint main(int argc, char *argv[])
{//定义一个char类型的变量并赋值,输出字符使用%cchar a = 'w';printf("a = %c\n", a);//定义一个short类型的变量并赋值short b = 100;printf("b = %d\n", b);//定义一个int类型的变量并赋值,输出int类型变量的值使用%dint c = 9999;printf("c = %d\n", c);//定义一个long类型的变量并赋值,输出long类型变量的值使用%ldlong d = 34536453;printf("d = %ld\n", d);//定义一个float类型的变量并赋值,输出float类型变量的值使用%f//默认保留小数点后六位,并且可以四舍五入float e = 3.1415926;printf("e = %f\n", e);//定义一个double类型的变量并赋值,输出double类型变量的值使用%lfdouble f = 3452.2345324523452;printf("f = %lf\n", f);return 0;
}
2 构造类型
概念:由若干个相同或不同类型数据构成的集合,这种数据类型被称为构造类型
例: int a[10];
数组、结构体、共用体、枚举
扩展:常量和变量
常量:在程序运行过程中,其值不可以改变的量
例: 100 ‘a’ “hello”
整型
100 , 125 , -100 , 0
实型
3.14 , 0.125f , -3.789
字符型
‘a ’ , ‘ b ’ , ‘ 2 ’
字符串
“ a ” , “ ab ”,“ 1232 ”
ASCII 码表
ASCII 码表:对于计算机而言,只能识别二进制数,也就是数值,对于非数值型数据,如果 要使用,就需要将其用一个数值型数据进行标识,就称之为ASCII码表
测试
#include <stdio.h>int main(int argc, char *argv[])
{//注意在使用字符类型的数据时,如果用%c输出就是输出字符,如果用%d就是输出字符的ascii值char ch1 = 'w';printf("ch1 = %c %d\n", ch1, ch1);char ch2 = 97;printf("ch2 = %c %d\n", ch2, ch2);return 0;
}
2 变量
变量:其值可以改变的量被称为变量
定义变量的方式:
存储类型 数据类型 变量名;
存储类型 数据类型 变量名 = 变量或者常量;
变量在定义的时候要满足标识符的命名规则
(1)只能由字母、数字和下划线组成
(2)首字母不能是数字
(3)不能关键字相同
整型数据
整型常量:(按进制分):
十进制:
以正常数字1-9开头,如457 789
八进制:
以数字0开头,如0123
十六进制:以0x开头,如0x1e
整型变量:
有/无符号短整型(un/signed) short(int) 2个字节
有/无符号基本整型(un/signed) int 4个字节
有/无符号长整型(un/signed) long (int) 4个字节 (32位处理器)
实型数据(浮点型)
实型常量
实型常量也称为实数或者浮点数
十进制形式: 由数字和小数点组成:0.0、0.12、5.0
指数形式:
123e3代表123*10的三次方
123e-3代表123*10的负三次方
不以f结尾的常量是double类型
以f结尾的常量(如3.14f)是float类型
实型变量
单精度(float)和双精度(double)3.1415926753456
float型: 占4字节,7位有效数字,指数-37到38
double型: 占8字节,16位有效数字,指数-307到308
字符数据
字符常量:
直接常量:用单引号括起来,如:
'a'、'b'、’0’等.
转义字符 : 以反斜杠“\”开头,后跟一个或几个字符、如'\n','\t'等,分别代表换行、横向跳格.
‘\\’表示的是\ ‘ \’ ’
字符变量:
用char定义,每个字符变量被分配一个字节的内存空间
字符值以ASCII码的形式存放在变量的内存单元中;
注:char a;
a = 'x';
a变量中存放的是字符'x'的ASCII :120
即a=120跟a='x'在本质上是一致的.
字符串常量
是由双引号括起来的字符序列,如“CHINA”、”哈哈哈”
“C program”,“$12.5”等都是合法的字符串常量.
字符串常量与字符常量的不同
‘a’为字符常量,”a”为字符串常量
每个字符串的结尾,编译器会自动的添加一个结束标志位'\0',
即“a”包含两个字符‘ a’和’\0’
3 格式化输出字符
普通字符
%d 十进制有符号整数
%ld 十进制long有符号整数
%u 十进制无符号整数
%o 以八进制表示的整数
%x 以十六进制表示的整数
%f float型浮点数
%lf double型浮点数
%e 指数形式的浮点数
%c 单个字符
%s 字符串
%p 指针的值
特殊应用
%3d %03d %-3d %5.2f
%3d 要求宽度为3位,如果不足3位,前面空格补齐;如果足够3位,此语句无效
%03d 要求宽度为3位,如果不足3位,前面0补齐;如果足够3位,此语句无效
%-3d 要求宽度为3位,如果不足3位,后面空格补齐;如果足够3位,此语句无效
%5.2f 小数点后只保留2位
#include <stdio.h>//格式化输出字符的使用int main(int argc, char *argv[])
{//输出整数int a = 100;//输出十进制数,用%dprintf("a = %d\n", a);//输出八进制数,用%o//printf("a = %o\n", a);//使用%#o,可以输出八进制数的前导符printf("a = %#o\n", a);//输出十六进制数//printf("a = %x\n", a);// 使用%#x,可以输出十六进制数的前导符printf("a = %#x\n", a);//输出浮点型数据,float使用%f,double使用%lf//默认小数点后保留六位,并且可以四舍五入,如果不够六位自动补0float b = 3.1415926;double c = 2345.2345;printf("b = %f\n", b);printf("c = %lf\n", c);//输出字符,使用%c输出字符,使用%d可以输出字符的ascii码值char d = 'y';printf("d = %c %d\n", d, d);//输出字符串,使用%s//没有专门的变量保存字符串,一般使用数组来保存char e[] = "hello world";printf("e = %s\n", e);//输出地址,使用%pint f = 999;//&:取一个变量的地址,一般地址用十六进制数标识printf("&f = %p\n", &f);printf("********************\n");int m = 456;printf("%d%d\n", m, m);//%5d:输出的宽度为5,右对齐,如果实际数据的宽度小于5,则左边位置补空格,如果大于5,则没有用printf("%5d%5d\n", m, m);//%05d:输出的宽度为5,右对齐,如果实际数据的宽度小于5,则左边位置补0,如果大于5,则没有用printf("%05d%05d\n", m ,m);//%-5d:输出的宽度为5,左对齐,如果实际数据的宽度小于5,则右边补空格,如果大于5,则没有用printf("%-5d%-5d\n", m, m);float n = 3.678;printf("n = %f\n", n);//%.2f:小数点后保留两位并且可以四舍五入printf("n = %.2f\n", n);return 0;
}