关键字(保留字)
char | short | int | long | float | double | if | else |
return | do | while | for | switch | case | break | continue |
default | goto | sizeof | auto | register | static | extern | unsigned |
signed | typedef | struct | enum | union | void | const | volatile |
变量
变量定义
类型 变量名;
变量的命名规则
- 变量可以由字母、数字和下划线组成
- 变量名不能包括除下划线以外的任何特殊字符
- 变量名必须以字母或下划线开头
- 变量名不能包括空白字符
- 关键字(保留字)不能用作变量名
- 变量名区分大小写
驼峰命名法
当变量名或函数名是由一个或多个单词连接在一起时,第一个单词以小写字母开始,第二个单词的首字母大写或每一个单词的首字母都采用大写字母。如 studentNumber,bookPrice 等。
另外还存在一个命名习惯,即用下划线作为区别。如 student_number,book_price 等。
不管采用哪一种命名规范,都要统一命名,最好不要交叉使用,以免混淆。
数据类型
分类
按照所占用字节数量的大小,分为 char,short,int,long,float,long long,double 等类型。
ASCII 表
转义字符
字符 | 意义 | ASCII 值 | 备注 |
\b | 退格(BS)当前位置向后回退一个字符 | 8 | 转义后,值发生了改变,在 0-32 以内表示控制字符 |
\r | 回车(CR),将当前位置移至本行开头 | 13 | |
\n | 换行(LF),将当前位置移至下一行开头 | 10 | |
\t | 水平制表(HT),调到下一个 TAB 位置 | 9 | |
\0 | 用于表示字符串的结束标记 | 0 | |
\\ | 代表一个反斜线字符 \ | 92 | 转义后,值并没有发生改变,解决了因被占用,又要作输出时引起的错误。 |
\" | 代表一个双引号字符 " | 34 | |
\' | 代表一个单引号字符 ‘ | 39 | |
%% | 代表一个百分号 % | 37 | |
\ddd | 1 到 3 位八进制所代表的任意字符 | 八进制 | 可表示任意的字符 |
\xhh | 1 到 3 位十六进制所代表的任意字符 | 十六进制 |
常量
常量在程序中不会发生改变,一般会以宏的形式出现,用于赋值或者参与计算。
整型常量
- 十进制:除表示整数 0 外,不以 0 开头,负数前加 (-) ,后缀 “l” 或者 “L” 表示长整型,“u” 或者 “U” 表示无符号数。
- 八进制:以数字 0 开头的连续数字序列
- 十六进制:以 0x 或 0X 开头的连续数字和字母序列
实型常量
- 小数形式:由数字和小数点组成,必须要有小数点
- 指数形式:用幂的形式表示,用字母 e 或 E 后边跟一个以 10 为底的幂数。字母前后必须要有数字,字母后的指数必须要是整数。
ps:一般情况下,实型常量默认为 double 型。后缀为 “f” 或 “F” 表示该数为 float 型。后缀为 “l” 或 “L” 表示为 long double 型。
字符常量
以单引号引起来的一个字符。
字符串常量
以双引号引起来的一串字符
格式输入与输出
printf
printf 函数为格式输出函数,能够把制定的数据按照用户指定的格式输出到显示器上。格式为:
printf(“ 格式控制字符串“, 输出表列);
格式控制字符串用于指定输出格式,格式控制字符串由格式字符串和非格式字符串两种组成。其中格式控制字符与输出表列是一一对应的关系。
格式字符串是以 % 开头的字符串,在 % 后面由各种格式控制字符,格式为:
% [标志][输出最小宽度][.精度][长度]类型
类型
用来表示输出数据的类型,主要有:
格式 意义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀 0) x,X 以十六进制形式输出无符号整数(不输出前缀 Ox) u 以十进制形式输出无符号整数 f 以小数形式输出单、 双精度实数 e,E 以指数形式输出单、 双精度实数 g,G 以%f 或%e 中较短的输出宽度输出单、 双精度实数 c 输出单个字符 s 输出字符串 宽度
用十进制整数表示输出的最少位数。若实际位数多余定义的宽度,则按照实际数输出,若实际位数少于定义的宽度则用空格或 0 补齐
标志
标志 意义 - 左对齐; 默认右对齐 + 当一个数为正数时, 前面加上一个+号, 默认不显示 0 右对齐时, 用 0 填充左边未使用的列; 默认用空格填充 空格 输出值为正时冠以空格, 为负时冠以负号 # 对 c、 s、 d、 u 类无影响 对 o 类, 在输出时加前缀 o 对 x 类, 在输出时加前缀 0x
精度
精度用 "." 后跟一个十进制整数来控制,表示输出数字的小数位数。如果输出的是字符,表示输出字符的个数,若实际位数大于所定的数值,则截去超过的部分。
长度
修改符 作用对象 表示类型 h d,i,o,u,x short 型整数 l d,i,o,u,x long 型整数 l e,f,g double 型浮点数
scanf
scanf 函数的一般形式为:
scanf(“ 格式控制字符串” , 地址表列);
格式控制字符串的作用与 printf 函数相同,主要是为了确定输入字符的数值类型,地址表列中给出各变量的地址。
格式控制字符串的一般形式为:
%[*][输入数据宽度][长度]类型
类型
格式 字符意义 d 输入十进制整数 o 输入八进制整数 x 输入十六进制整数 u 输入无符号十进制整数 f 输入实型数 c 输入单个字符 s 输入字符串 *
用来表示该输入项,读入后不赋予相应的变量,跳过该输入值。
宽度
长度格式符为 l 和 h,l 表示输入长整型数据和双精度浮点数,h 表示输入短整型数据。
ps
- 待输入变量必须是以地址的方式表示
- 除格式字符,空格,Tab 外,其它需要原样输入。
- 空格 ,Tab, 回车,均可作为输入间隔,以回车作为结束。
- scanf 函数中没有精度控制
- 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均
为有效字符。- 如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确
putchar & getchar
putchar:向屏幕输出一个字符,有时候用在 scanf 函数后,用来读取回车符号。
getchar:从键盘获取一个字符
类型转化
隐式转化
不需要显式地进行类型转化就能够完成的类型转换就被称为隐式转换。
算术转化
- 整形提升:char,short,int 等类型在一起运算时,会被提升到 int 类型。
- 混合提升:运算时,以表达式中最长类型为主,将其他类型均转换成该类型。
- 若运算中最大范围为 double,则转化为 double。
- 若运算中最大范围为 float 则转化为 float。
- 若运算中最大范围为 long long 则转化为 long long。
- 若运算中最大范围为 int 则转化为 int。
- 若运算中有 char,short 则一并转化为 int。
赋值转化
整型和实型之间能够进行直接赋值的。操作时,一个加 0 ,一个去小数位。
强制转化
有时候隐式转换不能够满足需求时,就要进行强制类型转化。格式为:
(类型)待转换的表达式