1.C语言概述
- ’//’ 这种注释只能写成一行
- 最好写成int main(void)
- 报错的位置比真正的错误位置滞后一行
2.数据和C
- int dogs, cats = 94; (有效,但是这种格式很糟糕!)
- 如果要在八进制和十六进制前显示0和0x前缀,要分别在转换说明中加入 #
- 虽然C允许使用大写或小写的常量后缀,但是在转换说明中只能使用小写
- char grade = 65; (对于ASCII,这样做没问题,但这是一种不好的编程风格)
3.转义序列
4.字符串的格式化输入/输出
- 由于数组的末尾有个‘/0’的空字符,故数组的容量必须至少比待存储字符串中的字符数多1
- 字符串常量 “x” 和字符常量 ’x’ 的区别:
a: ‘x’ 是基本类型(char);而 “x” 是派生类型(char数组)
b: "x"实际上由两个字符组成:‘x’ 和空字符 ‘\0’ - printf() 可以在参数之间断为两行,但是不要在双引号中的字符串中间断
- sizeof() 和 strlen() 的区别:sizeof() 把字符串末尾不可见的空字符也计算在内
- 大写常量可提高程序的可读性
5.printf()函数
(1)printf()转换说明及其打印的输出结果显示
%a(A) 浮点数、十六进制和p记数法
%c 单个字符
%d(i) 有符号十进制整数
%e(E) 浮点数、e记数法
%f 浮点数、十进制记数法
%g(G) 根据值的不同,自动选择精度(%f,%e)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x(X) 无符号十六进制整数
%% 打印一个%
(2)printf()中的标记
6.scanf()函数
- 用scanf() 把字符串读入字符数组中,不要使用&
- 只有scanf("%c", value); 会读取每个字符,包括空白
- “%le”, “%lf” 和 “%lg” 表明把对应的值存储为double类型;“%Le”, “%Lf” 和 "%Lg"则是把对应的值存储为long double类型
- scanf("%c", &ch); 从输入的第一个字符开始读取;scanf(" %c", &ch); 则从第一个非空白字符开始读取
7.printf()和scanf()的*修饰符
- printf("%*d", width, value); 使用 *的话,后面要跟一个表示字宽的参数width
- scanf("%*d %d", &n); 跳过一个整数,把第2个整数拷贝给n