1
第一章C语言结构
- C代码编译成可执行程序经过4步:
(1)预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并 不会检查语法
(2)编译:检查语法,将预处理后文件编译生成汇编文件
(3)汇编:将汇编文件生成目标文件(二进制文件)
(4)链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的 可执行程序中去
首先编辑源文件.c文件编译生成一个.obj文件,再将生成的.obj 文件经过连接生成.exe文件,最后运行达到预期的结果。
注意:obj和exe都是二进制文件,只有exe可以执行 - = 是赋值语句, == 是相等比较语句
- scanf 只能定义宽度,不能定义精度
- 标识符是由下划线、数字、字母组成。开头不能是数字,全是英文字母不可以是关键字 要注意关键字首字母是否大写,大写不再是关键字
(do是关键字 define、main、printf、scanf、都不是关键字) - 输出%d应该是%%d 输出\n应该是\n
- i++先用后加,++i先加后用(i为变量,不可以是常量)
如果是++之后再进行输出n那么不管是先加还是后加都会加1
如果是在输出是n++那么输出n本来的值,n+1;++n是直接加1
在没有赋值的情况下可以直接i++赋值,但不可以++i - c语言中运算对象必须是整型的运算符是%
第二章数据类型及其运算
- C语言的整形数据在内存中的存储形式是补码,字符型是ASCII码
字符型是按照ASCII码形式存储,‘a+b’没有这个类型,可以是‘a'+‘b’,可以是5+7, 算出结果转换,也可以是‘\0’(‘\0’可以转换ASCII码) - 小写字母-32=大写字母 大写字母+32=小写字母
字符+‘0’=数字 数字-‘0’=字符
ASCII码‘a’—‘z’97—122 ‘A’—‘Z’ 65—90
‘0’—‘9’ 48—57 - strlen()函数遇到\0就会停止
sizeof()函数计算字符串长度(如果字符数组没有定义长度赋值时字符串会自动加上\0, 赋值是字符就是字符的个数) - %左右都必须是整数,符号与左边变量保持一致
/两边都是整形结果就是整形,有一边是小数结果就是小数 - 对于double类型,输入格式为scanf(“%lf %lf”, &A, &B);
对于float类型,输入格式为scanf("%f %f, &A, &B);
对于double类型和float类型,输出格式均为printf(“%f %f\n”, A, B); - 常量是否正确
1).e前e后必有数,e后必为整数
2).整型常量就是整常数,10进制数、8进制数和16进制数三种。如:10、012、 0x0A
3).实型常量也称为浮点型常量。如:3.14 、 1.2E-4
1.浮点常量就是一种呈现有符号实数的十进制数字。有符号实数的呈现包括一个整数部分,一个小数部分,还有指数。可以使用浮点常量来呈现不可以被改变的浮点值。
2.e前e后必有数,e后必为整数
3.你既可以忽略十进制小数点(值的整数部分)前面的数字也可以忽略十进制小数点(小数部分)后面的数字,但是不可以同时忽略两者。只有在你包括了一个指数的时候,你才可以省去十进制小数点。不允许空白字符分隔数字或者常量字符。
4.e后面是正数小数点右移,负数左移,是几就移动几位
4).字符型常量必须用单引号括起来。如:'M' , '\n'
5).字符串常量应用双引号括起来。如:"abc" , "a" - 运算符优先级
1、最高级:出现同级别运算符时的结合方向是从左往右(下面级别没写结合顺序时,默认是从左往右)。
( )圆括号
[ ]下标运算符号
->指向结构体成员运算符
.结构体成员运算符
2、第二级:!、~、++、--、-、(类型)、、&、sizeof。
这一级都是单目运算符号,这一级的结合方向是从右向左。
比如出现p++,这时和++同级别,先算右边,再左边。
所以p++等价于(p++),而不是(p)++。
3、第三级:+、-、*、/、%
这一级都是算术运算符,结合顺序和数学学习中一致的,先乘除取余数,后加减。
4、第四级:<<、>>
这是左移、右移运算符,位运算时可能需要用到。
5、第五级:<、<=、>、>=、!=、==
这些运算符也称为关系运算符,其中<、<=、>、>=高于!=、==。
6、第六级:&、^、|
这三个符号也是位运算符号,其中内优先级,&>^>|。
7、第七级:&&、||
逻辑与&&优先级大于逻辑或||。
8、第八级:? :
也称为条件运算符号,是C语言中唯一的一个三目运算符,结合顺序是从右往左。
9、第九级:=、+=、-+、*=、/=、%=
这些运算符也叫做赋值运算符,除此之外,>>=、<<=、&=、^=、|=这些赋值运算符也在这一级别内,结合顺序是从右往左。
10、最低级:,
逗号运算符也称为顺序求值运算符,在C语言中,运算级别最低。
- 转义字符
ASCII码转换为十进制整数八进制转换十进制:例101=182+0*81+18^0(十六进制同理)
\ddd中是八进制,数字不可以大于等于8
\xdd中是十六进制,数字不可以大于等于16
9. 逗号运算符
自左至右,依次计算各表达式的值,“表达式n” 的值即为整个逗号表达式的值。 (记住,最后一个表达式的值才是整个逗号表达式的值。 )
例如,逗号表达式a = 3 * 5, a * 4的值是60, 先求解a = 3 * 5,得a=
15; 再求a * 4 = 60,【15*4=60】 所以逗号表达式的值是 60。
10. printf()函数输出格式(正左补空格,负右补空格)
在屏幕上输出没有进制标志
1)、%d输出十进制整数
%d 按照实际长度输出
%md 长度大于m实际长度输出,小于m左端补空格
%-md 长度大于m实际长度输出,小于m右端补空格
%ld 长整型数据
整形都有长整形都可以在前面加l,数字表示宽度,正数左补空格,负数右补空格
2)、%o-以八进制形式输出无符号整数(不输出前缀O);
3)、%x-以十六进制形式输出无符号整数(不输出前缀OX);
4)、%u-以十进制形式输出无符号整数;(十进制unsigned整数)
5)、%c输出一个字符
6)、%s输出一个字符串
%s字符串实际长度输出
%ms长度大于m实际长度输出,小于m左端补空格
%-ms长度大于m实际长度输出,小于m右端补空格
%m.ns占m列,取左端n个字符,从右端输出,左补空格
%-m.ns占m列,取左端n个字符,从左端输出,右补空格(n>m,输出n个字符)
7)、%f输出实数,小数形式输出
%f整数全部输出,小数输出6位
%m.nf占m列,n个小数位,右侧输出,左补空格
%-m.nf占m列,n个小数位,左侧输出,右补空格(m<(整数位+n)),正常输 出,小数n位
8)、%e指数形式输出实数
%e共13位,小数6位,指数部分5位
%m.ne占m列,n为小数位,右侧输出,左补空格
%-m.ne占m列,n个小数位,左侧输出,右补空格(m<(整数位+n)),正常输 出,小数n位
%me没有指定小数位,6位小数
9)、%g输出实数(f或e格式) 不输出小数点后无意义的0

浙公网安备 33010602011771号