书:C程序设计基础 浙江科学技术出版社
第二章——基本数据类型与常用库函数:
- 转移字符表和ASCII表大致要知道,要考;最经典的是a与A的ASCII码相差32,不要想当然以为是24个英文字母
- 对于字符,单引号内表示单个字符,如:‘a’,双引号表示字符串,如“a”,格外注意,单个字符也可作为字符串,因为里面默认有个/0的存在
- 1个字节包含8个位
- char类型占8个位,short占16位,int、long占32位,它们前面加unsigned并不改变数据长度,只是数值范围没了负数,float占32位(4字节),double占64位(8字节)
- 整型数据的数值范围需要掌握,包含科学计数法版本和精确数字版本,除了unsigned long的精确数字不做要求。
- #define定义时不算完整句子,后面不打分号
- getchar()与putchar()的用法:getchar()用于读取用户从键盘输入的单个字符,目前不用太在意它的作用,getchar用到了缓冲区的知识。
getchar():单独使用可以使屏幕停住
getchar()的作用(试着读读)
C语言中的getchar()与putchar()详解
{
char c;
c=getchar();
putchar(c);
}
- C语言中的格式控制符,目前用在scanf与printf中,最常用的格式控制符就是%d里面的%,如果scanf中用%d但是输入的实型数据,那么会自动去掉小数点后的(如果有的话),printf类似
C语言格式控制符和转义字符
//极端例子(单纯是为了学习格式符,没多大意思)
char ch = '$';
float x = 153.45;
printf("%c%-8.2f\\n",ch,x);
//输出结果是$153.45 \n
/*“\”前面空了两格,%-表示左对齐,共8位,小数点也算一位,数字部分有5位,所以共有6位,
又因为有左对齐的存在,所以共需要8位,最后两位用空格补齐*/
-
对变量进行类型声明,一句语句只能只能申明一种数据类型。
-
short类型占16位,可以赋给short类型的最大值32767,最小值为-32768,这个是怎么计算出来的?最小值的最高位是一个隐藏有效位,按照负数的机内码法则是算不出来的,所有可以认为是定义的。
-
命名变量只能包含大小写字母、下划线、数字,但是开头只能是大小写字母、下划线,不能以数字开头,而且不能包含一些另外的奇怪字符,如“# & % ”等;且不能是保留字,意为有特殊含义的字符,如const、case
-
不同数据类型的数据相互赋值可能会出现的问题:C语言中不同类型数据之间的赋值
-
头文件中<>与""都可以用,只不过后者容易出现输入中文输入法但没察觉的情况,但是后者的范围更广,因为它会优先从当前文件夹找起。
C语言头文件<>和""的区别 -
实参、形参的区别:以我的话来说,形参时未知量,实参是具体的值
资料一:形参和实参的区别 -
关于连续赋值:第一种是错误的,不被允许;但是第二种是可以的
//第一种
int a=b=c=10;
//第二种
int a,b,c;
a=b=c=10;
-
左对齐与右对齐:拿printf来举例子,更好说明,默认是右对齐的。
资料一:关于printf输出之左对齐与右对齐 -
实型数据:指float、double两种
-
double数据类型可以用%f输出,但是不能用%f输入,输入必须是%lf
资料一:double变量可以用%f输出 -
单精度浮点数float有效长度为7位(总共,包含小数点前后),双精度浮点数double有效长度16位。
-
最初已经定义过int了,后面不能再重复定义这个变量,不然会报错,出现expected expression
第三章:运算符和表达式
- scanf输入数据是不能规定小数点后几位的。
- 关于++i与i++,两者不存在先后,从左往右;i++是先参与运算(指的是把此时未加1的i进行运算,再加1),++i是先对此时此刻的i+1,然后将+1后的值赋给i,进行后续运算。
//上课困扰我的例子
int a =3 ;
int b = --a+--a+a++;
printf("%d",b);
//输出3
- 在判断真值时,并不是说只有“1”才是真值,非0的结果都表现为真。
- 条件表达式格式
( 逻辑表达式?表达式1:表达式2)
用得很少,但仍需要掌握,一般在比大小并赋值时使用。
max = a > b ? a : b
//如果a大于b,逻辑表达式为真,把a的值赋给max
//如果a小于b,逻辑表达式为假,把b的值赋给max
-
fabs求绝对值函数:fabs用于浮点型,abs用于整型;
但是fabs用于int,会存在一个强制转换在里面,也是可以用的,只不过不是很推荐。 -
在进行模运算时,如果叫模数和被模数,模数是不能为小数的,必须是整数。
-
' X ' == " X "
这是错误的,因为双引号表示的是字符串,字符串最后一位是“|0”,它也是有ASCII码的,所以两者的ASCII码是不一样的。 -
Visual C++ 6.0软件的使用,写好程序后,先是编译生成obj文件(目标文件),再是连接生成exe文件(可执行文件),然后可运行。
-
运算符的优先级(简版):
①!(逻辑非)
② * / % (乘除取模)
③+ -
④ >.<.>=.<=
⑤ ==.!=
⑥&&(逻辑或)
⑦||(逻辑非) -
累加、累积:+=、*=