版权声明:非商业转载请注明出处,商业转载请联系本人 /qq_38351824
声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。
作者:sumjess
目前内容:第一二章总结
1、#include 这行代码是一条C预处理器指令。通常,C编译器在编译前会对源代码做一些准备工作,即预处理;#include 中的#符号表明,C预处理器在编译器接手之前处理这条指令。
2、声明注意事项:
(1)只可以用小写字母、大写字母、数字、下划线来命名,而且名称一个字符必须是字符或下划线,不能是数字;
(2)最好不要把初始化变量和未初始化的变量放在同一条声明中;
(3)大小写字母是被认为是两个不同的字符;
(4)用户标识符与关键字相同,则在对程序进行编译时系统将给出出错信息;如果用户标识符与预定义标识符相同,系统并 不报错,只是该预定义标识符将失去原定含义;
(5)#define命令行的最后不得加分号;
3、进制表示:
十进制基本常量用一串连续的数字表示,例如 3223、-2342、0等;
八进制也是用一串连续的数字表示,但其开头必须是数字“0”;
十六进制数用数字0和字母x(或大写字母X开头),注:十六进制中的字母a、b、c、d、e、f既可以用大写也可以用小写;
注意:(1)在C程序中只有十进制可以是负数,而八进制和十六进制数只能是整数;
(2)对于一个有符号整数,其中最高位(最左边的一位)用来存放整数符号,称为符号位。若是正整数,最高位放置0;若是负整数,最高位放置1;
相关于原码、补码、反码,负数的十进制和二进制的相互转换请参考
4、基本运算符:
(1)说明:
① 如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。eg:1.0/2.0=0.5 而 1/2=0 ;
②如果双目运算符两边运算数的类型不一致,系统将自动进行类型转换,转换规律见下图:
③在C语言中,所有的实型数的运算符均以双精度方式进行。若是单精度,则在尾数部分添0,使之转化为双精度数;
(2)算数运算符的优先级:
(3)强制类型转换表达式:
形式: (类型名)(表达式)
eg: 表达式(int)3.234把3.234转换成整数 3;表达式(float)(10%3)把所得结果转换成双精度数。
(4)复合赋值表达式:
复合赋值运算符有:+=、-=、*=、/=、%=;
注:复合赋值运算符和赋值运算符的优先级相同。
附练习题一道:
(5)赋值运算中的类型转换:
赋值号右边的值先转换成与赋值号右边的变量相同的类型,然后进行复制;
注:建议手动强制转化,否则可能会有警告。
5、自加自减运算符:
(1)如果只是看i++和++i,这两个是等价的,都等同于i=i+1,都是变量自身加1。
(2)在一般情况下,它们都是跟赋值联系在一起。
比如:
int a;
a=i++; //将i的值赋值给a,即a=i;然后再执行i=i+1;
也就是【a=i++;】与【a=i; i=i+1;】等价。
a=++i;//将i+1的值赋给a,即a=i+1;然后再执行i=i+1;
也就是【a=++i;】与【a=i+1;i=i+1;】等价。
(3)总结一下:
①前置++是将自身加1的值赋值给新变量,同时自身也加1;
②后置++是将自身的值赋给新变量,然后才自身加1。