自定义标题
一.运算符

隐式转换
不同类型数据运算时先自动转换成同一类型。
各类型的级别高低如下:
char < short ≤ in t ≤ unsigned ≤ long ≤ unsigned long < float < double

若整数,双目运算符的两边一个是有符号另一是无符号数。转换规则如下:
首先看,有符号数的类型能否表示无符号数类型的所有取值范围,若可以,则都变成有符号数的类型;否则都变成无符号数的类型。转换的方法和赋值转换的规则相同。
注意:unsigned char 或 unsigned short 都会先转成int
unsigned int a = 2 ;
short b = -5 ;
结果:a + b > 0
unsigned short a = 2;
int b = -5 ;
结果: a + b < 0
unsigned int a =2 ;
int b = -5;
结果: a + b > 0
二.赋值转换
使赋值号右边表达式值自动转换成其左边变量的类型
同类型,有符号和无符号之间赋值,直接把等号左边的内存拷贝到等号右边变量的内存里。
unsigned int a = -3;//a的内存位图和-3的补码位图相同
长的赋给短的类型,把长的类型的低位,拷贝给短的类型
char ch = 0x1234; // ch获得的是0x34的位图
短的赋给长的类型,根据短的类型是否为有符号的。若为有符号的,符号位扩展到长类型的宽度,然后赋给长类型。若为无符号的,高字节填0,赋给长类型的
三.printf输出转换
printf把char、short提升到int型,再传给printf。把float提升到double类型再传给printf。
四.强制类型转换
强制转换得到所需类型的中间变量,原变量类型不变
可能发生精度损耗
五.自增自减 ++ - -
j=3; k=++j;
j=3; k=j++;
j=3; printf(“%d”,++j);
j=3; printf(“%d”,j++);
a=3;b=5;c=(++a)*b;
a=3;b=5;c=(a++)*b;
六.关系运算
关系表达式的值: 1 关系成立,0 关系不成立
应避免对实数作相等或不等的判断
如 1.0/3.03.0==1.0 结果为
可改写为:fabs(1.0/3.03.0-1.0)<1e-6
七.逻辑表达式的短路特性

八.逗号表达式
形式:表达式1,表达式2,…… ,表达式n
逗号表达式的值:等于表达式n的值
int a = 3, 4, 5; //a = 3
int a = (3, 4, 5); // a = 5
九.算法+数据结构=程序
十 控制结构结合语句
switch
case 后跟 break
while
while结构是先判别、后执行的循环结构
while结构的循环体可以为空语句,即“;”
do while
至少执行一次循环体
for
for ( ; ; ) ; // 死循环
break 与 continue
break: 跳出循环体
continue : 跳出本次循环
这篇博客详细介绍了C语言的基础知识,包括运算符的隐式转换规则,赋值转换过程,printf函数的输出转换行为,强制类型转换的应用,自增自减操作,关系运算的注意事项,逻辑表达式的短路特性和逗号表达式的理解。此外,还讨论了算法与数据结构在程序设计中的重要性,以及控制结构如switch、while、do while和for循环的使用,以及break和continue语句的功能。
827

被折叠的 条评论
为什么被折叠?



