转义字符:
- ‘\a’ : vision、sound alert
- ‘\b’ : backspace
- ‘\f’ : change cursor to the top of next page
- ‘\n’ : change line
- ‘\r’ : carriage return
- ‘\t’ : vertical form
- ‘\v’ : horizontal form
- ‘\101’ octal of ACSII
- ‘\x41’ hex of ACSII
常变量、符号常量:
1
2
3
4
5
6
7
8
| //符号常量
//#define是预编译指令,在预编译后所有的PI都会被替换成3.14
//对于PI来说,系统不会分配内存给它
#define PI 3.14
//常变量
//系统会给pi分配内存,他只是一个不能改变值的变量,使用更加方便
const float pi = 3.14
|
标识符:
- 只能 字母、数字、下划线 组成
- 开头只能 字母、下划线
字符型数据:
ACSII字符集
- 7位二进制
- 用一个字节存储(共128个)
- 000:表示NULL
- 字母: (大小写 52个)
- 数字: (0~9 10个)
- 专门符号: (29个)
- 空格符: \space、\t、\v、\n、\f (5个)
- 不能显示的字符: null(\0)、 alert(\a) 、bcakspace(\b)、 carriage return(\r)…
字符型数据的存储空间
类型 | 字节数 | 取值范围| tips :-: | :-: | :-: | :-: singed char | 1 | -2^7 ~ (2^7-1)| 这里的-0
,转换为补码为1000 0000
[表示-128];+0
,转换为补码:0000 0000
[表示0] unsinged char | 1 | 0 ~ (2^8-1) | *
关于-0
与+0
的问题
实型数据
类型 | 字节数 | 有效数字 |
---|
float | 4 | 6 |
double | 8 | 15 |
long double (visual C++) | 8 | 15 |
long double (Turbo C) | 16 | 19 |
注意: C程序中的实型常量都作为双精度浮点数常量。
1
2
| float a = 3.1415926
//这里系统会把a按照双精度浮点数处理
|
1
2
3
4
| float a = 3.1415926f
//加上f或者F,表示强制指定常量的类型位float,此时系统按照单精度浮点数处理
long double a = 1.23L
//同理,强制指定类型
|
c语言中的除法
`
- 1.两个实数相除 -> 双精度实数
- 2.两个整数相除 -> 整数 `
注意: 在多数C的编译系统中,整数除法采用 "向零取整" 的方法,
1如:5/3 = 1, -5/3=-1
注意: % (取余)运算符 要求运算对象必须位整数)
c语言中的自增、自减运算符
1
2
3
4
5
6
| int j;
int i = 3;
j = ++i; (i的值先变成4,再赋值给j)
j = i++; (先将i的值3赋值给j,j=3,然后i再变成4)
|
格式字符c的注意点:
printf函数中的格式字符:
格式字符 | 说明 |
---|
d,i | 带符号的十进制整数(正数不输出符号) |
o | 八进制五符号形式输出整数(不输出前导符 o) |
x,X | 十六进制输出整数 (不输出前导符 0x) x:小写字母输出;X:大写字母输出 |
u | 无符号十进制整数 |
c | 一个字符 |
s | 字符串 |
f | 小数形式(单、双精度,隐含6为小数) |
e,E | 指数形式 e:(1.2e+02) E: (1.2E+02) |
g,G | %f 或 %e输出宽度较短的一种格式,不输出无意义的0 |
printf函数中的附加字符:
字符 | 说明 |
---|
l | 长整形,可以加在d、o、x、u前 |
m(代表一个正整数) | 数据最小的宽度 |
n(代表一个正整数) | 对于实数,表示输出n位小数;对于字符串,表示截取的字符个数 |
- | 输出的数字或字符在域内靠左 |
scanf函数中用到的格式字符(用法与printf类似)
格式字符 | 说明 |
---|
x,X | 输入无符号的十六进制(大小写作用相同) |
s | 输入时(以非空白符开始) 结束时(以标志\0 结束) |
f | 输入实数, 可以用小数 or 指数 输入 |
e、E、g、G | 与f单作用相同,e与f、g可以相互替换 |
scanf函数中用到的格式附加字符:
附加字符 | 说明 |
---|
l | 输入长整形 (%ld, %lo, %lx, %lu) 以及 double类型(%lf or %le ) |
h | 输入短整形(%hd, %ho, %hx) |
域宽 | 制定输入数据的宽度(列数) 域宽(正整数) |
* | 输入项读入后,不赋给相应的变量 |
注意1:如果在格式控制字符串中除了格式声明以外还有其它字符,则在输入数据时,应该在对应单位置上输入相同单字符
1
2
| scanf("a=%d,b=%f,c=%f",&a,&b,&c);
//即要输入: a=1
|
注意2:在连续输入字符时,两个字符间不要插入空格和其它字符(除非在scanf函数中的格式字符串中有*普通字符*),让系统能够区分两个字符
字符输入输出函数:
1.putchar函数:
向显示器输出一个字符
虽然字符类型也属于整数类型,但是putchar函数输出的是字符形式,所以不能输出整数
要求其值需要在ACSII码的范围之内
2.getchar函数:
getchar函数没有参数,其作用是输入一个字符 getchar只能输入一个字符,如果要输入多个字符,就要多次调用 getchar 的注意事项,在键入一个字符后,不要马上按回车,这样会把回车也作为一个字符输入
if语句的注意事项:
if语句中 非0代表真
0代表假
例题:判断某一年是否为闰年
1
2
3
| if((year%4 == 0 && year%100 != 0) || year % 400 ) ==0)
//1、能被4整除,但不能被100整除
//2、能被400整除
|
switch语句注意事项:
各个case单标号出现次序不影响执行结果,例如:可以先出现default标号,再出现case ...
每个case常量必须互不相同,否则会出现互相矛盾 最后一个case可以不必要➕break语句 一旦进入一个case/default,只要没有break,就会一直执行下面的每一个case!!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
int main()
{
int n = 'e';
switch (--n) { //注意这里是--n 还是 n--
case 'd':
printf("warn");
case 'a':
case 'b':
printf("good");
break;
case 'c':
printf("pass");
default:
printf("error"); //一旦进入一个case/default,只要没有break,就会一直执行下面的每一个case
}
}
|