3.1 示例程序
int num;
scanf("%d",&num); 格式化接受控制台用户输入指定数据信息保存到定义的变量中。
(1)程序中的新元素
%d ---> int %f ---> float %s ---> char[]
3.2 变量与常量数据
...
3.3 数据:数据类型关键字
最初K&R给出的关键字 C90标准添加的关键字 C99标准添加的关键字
int signed _Bool
long void _Complex
short _Imaginary
unsigned
char
float
double
位bit 0/1 机器码,计算机最小记忆单位。
字节byte = 8*bit,一个字节等于8个位(比特位),计算机最小存储单位。
字word,计算机执行能力,x8bit/x16bit/x32bit/到现在普及的x64bit操作系统,指的是计算机一次可以运算操作多少位数据的能力。
(1)整数和浮点数
(2)整数就是不含有小数点的数据
(3)浮点数就是带有小数点的数据
3.4 C语言基本数据类型
(1)int
声明定义int变量。
初始化变量。
给变量赋值的数据就是变量的常量。
打印int值。
八进制和十六进制数据都是2的幂而默认十进制却不是,显然,八进制和十六进制记数系统在表达与计算机相关的值时很方便。
显示十进制,八进制,十六进制
#include <stdio.h>
int main(void)// 正确主函数入口
{
int a = 100;
printf("十进制 = %d , 八进制 = %o , 十六进制 = %x \n", a, a, a);// 十进制,八进制,十六进制
打印信息:100,144,64。
printf("十进制 = %d , 八进制 = %#o , 十六进制 = %#x \n", a, a, a);// 十进制,显示前缀八进制,显示前缀十六进制
打印信息:100,0144,0x64。
}
(2)其他整数类型
short int(简写为short),是有符号(±)类型。
long int 或者long 有符号(±)类型。
long long int 或者 long long ,是有符号(±)类型。
unsigned int 或者 unsigned ,是无符号类型。符号在位中占一位大小。
signed 在任何有符号类型前添加,可强调使用有符号类型的意图。如:short,short int,signed short,signed short int 都是表示同一种类型。
1)声明其他正数类型
2)使用多种整数类型的原因
一是内存大小的选择使用,、二是现在计算机计算能力的提升。
在选择多种int优先考虑使用unsigned(无符号)类型的整数。
3)long常量和 long long 常量
要把较小的常量作为long 类型对待,可以在值的末尾叫上l(小写的L)或L后缀,l或L后缀也可用于八进制和十六进制整数。
类似的,long long 也可以使用ll或LL后缀来表示,另外,u或U后缀表示unsigned long long,如:5ull,10LLU。
4)打印short,long,long long 和unsigned类型
使用printf()格式化输出打印。
long %lx 十六进制
long %lo 八进制
(3)使用字符:char类型:一个字节,大小8*bit位
用于存储字符,单引号‘?’。
存储ASCII码整数表示的字符。
1)声明char类型变量:char itable;
2)字符常量和初始化:char itable = 'A';char itable = 65;(在ASCII码中,65代表A字符)
3)非打印字符(转义字符)
从C90开始,不仅可以使用十进制,八进制形式表示字符常量,C语言还提供了用十六进制形式表示字符常量,即反斜杠后跟一个x或X,加1~3位十六进制数字。(char a = \0x41; char b = \0101; char c = 10; 就是以十六进制,八进制,十进制常量)
4)打印字符
使用printf()。
%c 是打印字符信息,%d 是打印字符数值
5)有符号还是无符号
根据编译器不同会把char定义为有符号(-128~127)或无符号(0~255)。
根据C90标准,C语言允许在char前使用signed或unsigned关键字,这样解决了编译器不同的问题。
(4)_Bool类型(C99标准添加),注意使用stdbool.h头文件
(5)可移植类型:stdint.h和intypes.h
(6)float,double和long double
float,C标准规定,至少能表示有6位有效数字。f/F
double,C标准规定,至少能表示有10位有效数字。系统默认类型
long double,C标准规定,至少与double类型的精度相同。l/L
1)声明浮点类型
...
2)浮点类型常量
...
3)打印浮点值
使用pintf()格式化输出打印。
float/double %f。
使用 %e 打印浮点为指数格式,如果系统支持十六进制格式浮点数,可用a和A分别代替e和E。
long double %Lf。%Le/%La。
4)浮点值得上溢和下溢
(7)复数和虚数类型(complex.h)
三个复数类型:float_Complex,double_Complex,long double_Complex。
三个虚数类型:float_Imaginary,double_Imaginary,long double_Imaginary。
(8)其他类型
数组,指针,结构,联合。
(9)类型大小
1个字节 = 8*bit。程序中可以使用sizeof(type)type代表类型或者类型的变量名称,获取该类型的字节大小信息。
3.5 使用数据类型
int i_name = 1;unsigned int ui_name = 1;注意类型和名称之间的定义,并非强制,而是规范,从名称中能得知类型信息。
3.6 参数和陷阱
printf(),格式化输出,scanf(),格式化输入的类型对应和参数变量的数量。
3.7 转义序列示例
(1)程序运行情况
(2)刷新输出,使用fflush()函数
3.8 关键概念
3.9 本章小结
3.10 复习题
3.11 编程练习