C语言中,数据类型分为基本数据类型、构造数据类型、指针类型和void类型4种类型。
计算机的内存结构是以字节为单位进行存储分配的,每个字节都用一个物理地址来唯一标识,系统根据所定义的变量的数据类型为其分配相应的存储空间。
对于32位机,字符型占1个字节,基本整型占4个字节,短整型占2个字节,长整型占4个字节,单精度浮点型占4个字节,双精度浮点型占8个字节。而对16位机,基本整型占2个字节。
共用体与结构体类似,也是由多个数据类型构造而成,但在存储结构上与结构体有着本质上的区别,不同之处在于共用体的各个成员共用一块内存,也就是说在同一时间中只有一个成员的值是有效的。
C语言规定,用动态存储分配函数时返回void指针,用于指向一个抽象的类型的数据,在将它赋给另一个指针变量时要进行强制类型转换来适合被赋值的变量的类型。使用完后,需要将动态申请的内存释放掉,否则会造成内存泄漏。
字符串常量是用一对双括号括起来的字符序列,系统在每个字符串的末尾都加上一个'\0'作为结束标志,即n个字符的字符串常量在内存中占n+1个字节的空间。
在C程序中,符号常量是用宏定义来定义的,不能被赋值,也不能被改变。
通常符号常量名的命名规则是全部大写,而且要见名知义,这与变量名的首写字符一般小写相区别。
变量的三要素是变量名、变量类型和变量值。
整型数据在内存中是以二进制形式存放,以补码形式表示的。
正数:原码即补码
负数:取绝对值;求绝对值的二进制形式;将二进制按位取反,再加上1,可得补码。
字符a和A的ASCII码分别为97和65,相差32.
逻辑运算符:&& || !
位操作运算符:& | ~
自增、自减运算往往用在循环语句中来控制循环变量的增减。
常用的数学函数:
double sqrt(double x) 计算x的平方根
double pow(double x,double y)计算x的y次幂的值
int abs(int x)计算整数x的绝对值
double fabs(double x)计算x的绝对值
double exp(double x)计算e的x次幂的值
double log(double x)计算以e为底的x的对数值
double log10(double x)计算以10为底的x的对数值
double sin(double x)计算sin(x)的值
对逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时才执行该运算符,这叫短路求值法。
条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。条件运算符的结合方向为自右向左。
位运算应用口诀:清零取反要用与,某位置一可用或,若要取反和交换,轻轻松松用异或。
C语言中,除了单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。
计算机中的数学和现实生活中的数学不完全一样,现实世界里,数学中能成立的数学规律,在计算机中则有可能不成立。
在C语言中,基本数据类型的数据在不同的平台上实现时,都有相应的类型的最大值和最小值的限制,这些和平台相关的类型限制信息存放在limits.h的头文件中。
在编写程序时要特别注意数据溢出的情况和不同类型自动转换并运算的情况,防止程序出现难以查找和难于理解的错误。