一.变量的类型:决定了能存什么样的数据
在C语言中,变量名属于标识符的一种
标识符的命名规则:
1、只能以字母、数字、下划线组成
2、不能以数字开头
3、不能使用C语言的关键字(共32个,例如:include )
变量的类型
存数字 10 需要几个字节? 1个字节足够
存数字 10000 需要几个字节? 2个字节足够
存不同的数,需要的内存看见大小是不同的
C语言根据变量占据的内存大小不同和存储数据类型不同,划分为不同的变量类型;
有符号的:
整形数据 :char、short、int、long、long long
浮点型数据:float、double
无符号:在整型数据前面加 unsigned
C语言用sizeof来测变量类型的长度,sizeof是C语言的一个关键字。
printf ("sizeof char = %lu\n", sizeof(char));
printf ("sizeof short = %lu\n", sizeof(short));
printf ("sizeof int = %lu\n", sizeof(int));
printf ("sizeof long = %lu\n", sizeof(long));
printf ("sizeof long long = %lu\n", sizeof(long long));
printf ("sizeof float = %lu\n", sizeof(float));
printf ("sizeof double = %lu\n", sizeof(double));
规则:
整型数据:char <= short <= int <= long <= long long
浮点数据:
float 有效位数:6 -- 7位
以6位为例,有效位数:123456789 有效的数据是123456 789 是不确定的数据
double 有效位数:15 --16位
二.变量的使用
1、变量的定义:给变量分配空间和名字:
类型 变量名
例如:
int a float f char c
2、变量的初始化 定义变量的同时给变量赋一个初始值:
类型 变量名 = 值
例如:
int a = 10 float f = 1.2
3、变量声明 只给变量取名字,没有给变量分配空间
注意:初始化只发生变量第一次被创建的使用
int a = 49;
// char 是字符变量,存的是一个字符,字符在内存中就是一个数字
char c = 65;
float f = 1.2;
double d = 2.3;
// printf 打印数据
// 打印整型 %d
printf ("a = %d\n", a);
printf ("c = %d\n", c);
printf ("--------------------------\n");
// 打印整型 %c
printf ("a = %c\n", a);
printf ("c = %c\n", c);
printf ("--------------------------\n");
// 打印浮点型数据%f %.nf(n代表显示小数点后面n位)
printf ("f = %.2f\n", f);
printf ("d = %.3f\n", d);
printf ("--------------------------\n");
// 固定宽度 %md m代表输出宽度 默认是右对齐
a = 123;
printf ("*****%10d*****\n", a); // 宽度是10,右对齐
printf ("*****%-10d*****\n", a); // 宽度是10,左对齐
printf ("*****%-10d*****\n", a); // 宽度是10,左对齐
printf ("*****%10d*****\n", a); // 不足部分补 0
printf ("*****%2d*****\n", a); // 不会截断,宽度按照实际的来 是3位
f = 1.23789;
printf ("*****%10.2f*****\n", f);
printf ("*****%2.2f*****\n", f);
三.字符
C语言使用:
1、使用单引号‘’括起来的单个符号,叫字符,比如:‘a’, ‘!’, ‘@’…
2、使用双引号“”括起来的内容,叫字符串,比如:“a”, “adas”, “lk#&@$@”
注意:内存中存的都是 二进制 数据,那如何存其他类型数据,字符、视频、声音、图片、汉字。
编码:把要存的内容转换成数字存入到内存,用的时候,从内存中取的是数字,然后将数字转换成相应的内容使用。
将字符 ‘a’ 存入到内存,比如用数字 97 表示字符 ‘a’
存:将 ‘a’ 转换成 97 存入到内存
读:读出的内容是 97 , 将 97 转换成 ‘a’ 使用
字符数据主要指数字、字母、通用符号、控制符号等等,在机器内都被变换成计算机能够识别的二进制编码形式。国际上被普遍采用的一种编码是美国国家信息交换标准代码,简称为ASCII。
1、ASCII 是以 一个字节进行编码
2.、第一部分由 00H 到 1FH 共 32 个,一般用来通讯或作为控制之用,有些字符可显示于屏幕,有些则无法显示在屏幕上,但能看到其效果(例如换行字符、归位字符)。
3、第二部分是由 20H 到 7FH 共 96 个,这 96 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。
4、第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个扩充字符是由 IBM 制定的,并非标准的 ASCII 码。这些字符是用来表示框线、音标和其它欧洲非英语系的字母。
四.编码
Utf-8是目前最常用的字符集编码方式,常用的字符集编码方式还有gbk和gb2312
Gb2312 简体中文 包括6763个汉字
BIG5 繁体中文 港澳台等用
GBK 包含全部中文字符 是GB2312的扩展,加入对繁体字的支持,兼容GB2312
UTF-8 则包含全世界所有国家需要用到的字符
五.printf
格式字符:
1、d:以带符号位的十进制形式输出整数(正数不输出符号)
2、o:一八进制无符号形式输出整数(不输出前导符0)
3、字母l:用于长整型数据,可加在格式符d,o,x,u前面
4、m(一个正整数):数据最小宽度
5、.n(一个正整数):对实数表示输出n位小数,对字符串表示截取的字符个数
六.打印
参考配色:
#define NONE “\033[m”
#define RED “\033[0;32;31m”
#define LIGHT_RED “\033[1;31m”
#define GREEN “\033[0;32;32m”
#define LIGHT_GREEN “\033[1;32m”
#define BLUE “\033[0;32;34m”
#define LIGHT_BLUE “\033[1;34m”
#define DARY_GRAY “\033[1;30m”
#define CYAN “\033[0;36m”
#define LIGHT_CYAN “\033[1;36m”
#define PURPLE “\033[0;35m”
#define LIGHT_PURPLE “\033[1;35m”
#define BROWN “\033[0;33m”
#define YELLOW “\033[1;33m”
#define LIGHT_GRAY “\033[0;37m”
#define WHITE “\033[1;37m”
七.scanf
以16进制打印变量的地址:%p
取变量的地址用 &
printf ("&a = %p\n", &a); // 打印变量 a 的地址
// 从键盘获取数据,把数据存入到 a
scanf ("%d", &a);
printf ("a = %d\n", a);
// scanf 是以空格或者换行作为一次读取结束标志
scanf ("%d %d", &a, &b);
printf ("a = %d, b = %d\n", a, b);
// 输入的时候格式和scanf 保持一致
scanf ("123 = %d 456 = %d", &a, &b);
printf ("a = %d, b = %d\n", a, b);
八.常量
1、字面量,可以在程序中直接引用的数据
2、常量的值是不允许改变的
(1)整型常量
十进制:
十进制整型常量,由正、负号和0至9十个数字组成,没有小数部分。
int型 32、345、12 、-65、-32768、32767
long int型 234L、234567453l、32L、32l、 -2147483648L
unsigned int型 345u、238U、65535u
unsigned long int型 256ul、12345678UL、 4294967295uL
八进制:
在数码前加数字0,例如:012 == 10(十进制)。
037u、0364L、0567453ul
16进制:
在数码前加0x(数字0和字母x,大小写均可),例如:0x12 == 18(十进制)。
0x1f 、0x1FL 、0xFul、0x10L
(2)实型
整数形式:
它由整数和小数两部分组成,这两部分可以省略其中的一个部分,但不能同时都省略(小数点不能省略)。
12.35 35. .689 (都是double型常量)
默认的类型是double型
指数形式:
在小数表示法后面加字母E(或e)表示指数。
1e-2 0.5E10 35.56E-3 7.e-2 (都是double型常量)
注意:指数部分可正可负,但必须是整数。
注意:
1、用指数形式表示的浮点数必须有尾数,指数部分必须是整数。
如:e12 , .e43 , 0.25e4.5 , e 等是错误的。
2、在浮点数常量的后面用字母F(或f)表示float(单精度浮点)类型。
如:1e-2f表示float型。
3、而字母L(或l)表示long double(长精度浮点)型 ,
如:3.2L表示long double型。
4、如果在浮点数常量的后面不加字母,则表示是一个double(双精度浮点)型常量。
2.1e-2
0.689 (都是double型常量)
(3)字符型
1、字符常量是由一个字母或转义字符两边用单引号括起来表示,
例如: ‘a’、‘D’、’\n’ 等。
2、字符常量在计算机内存放的值,为该字符ASCII编码值。
例如:'0’其编码值为48,而不对应数值0。
'A’的ASCII码值为65。
字符常量也可以用它的ASCII码值来表示,具体表示方法为:
1、八进制用’\ddd’表示,其中ddd代表三位八进制数。
例如:’\101’代表字母’A’,’\60’代表字符’0’(零)。
2、十六进制用’\xhh’表示,其中hh代表两位十六进制数。
例如:’\x41’代表字母’A’,’\x30’代表字符’0’(零)
转移字符:
常用反斜线 “\”开头后跟一个字符,但含义改变。
例如:\n:回车换行
\t:横向跳格(即跳到下一个输出区)
(4)符号常量
在C语言中我们还可以用一个与常量相关的标识符来代替常量出现在程序中,这种相关的标识符称为符号常量
定义形式:#define 标识符 常量数据
//整型
printf ("%d\n", 12); // 十进制
printf ("%d\n", 012); // 八进制,以0开头的数字
printf ("%d\n", 0x12); // 十六进制,以0x开头的数字
printf ("sizeof 12 = %lu\n", sizeof(12)); // 默认是 int 类型
printf ("sizeof 12L = %lu\n", sizeof(12L)); // 数字后面加 l 是long 类型
// 浮点型:默认的小数是 double 类型
printf ("sizeof 1.2 = %lu\n", sizeof(1.2)); // double
printf ("sizeof 1.2f = %lu\n", sizeof(1.2f)); // float
// 字符:单引号括起来
printf ("%d\n", '1');
printf ("%c\n", '1');
// 特殊字符要转义:用 \ 来转义
printf ("%c\n", '\"'); // 输出一个双引号
// 字符串:双引号括起来 用 %s 进行输出
printf ("%s\n", "hello world");
printf ("hello world\n");
//符号常量
#define PI 3.14
#define STR "hello world\n"
int main2()
{
printf ("%.2f\n", PI);
printf ("%s", STR);
printf (STR);
return 0;
}