C语言进阶
Li-Donald
这个作者很懒,什么都没留下…
展开
-
2-9 const 和 Volatile分析
const只读变量,在C语言中const修饰的变量不是真正的常量,他只是告诉编译器该变量不能出现在赋值符号的左边- const修饰的变量时只读,本质还是变量;- const修饰的局部变量在栈上分配空间;- const 修饰的全局变量在全局数据区分配空间;- const只有在编译期有用,在运行期间无用;在现在C语言编译器中,修改const全局变量将导致程序奔溃- 注意:标准C语言编译器不会将const修饰的全局变量存储与只读存储区域中,而是存储与可修改的全局数据区,其值依然可...原创 2020-07-29 23:24:12 · 224 阅读 · 0 评论 -
2-8 goto语句和void分析
遭人唾弃的goto - 高手潜规则:禁用goto - 项目经验:程序质量与goto的出现次数成反比; - 最后的判决:将goto打入冷宫goto的副作用,示例如下:#include <stdio.h>#include <malloc.h>void func(int n){ int* p = NULL; if( n < 0 ) { goto STATUS; } p = (int*)...原创 2020-07-29 09:07:35 · 119 阅读 · 0 评论 -
2-7. 循环语句
循环语句的基本工作方式 - 通过条件表达式判定是否执行循环体; - 条件表达式遵循if语句表达式的原则;do,while,fo的差异: -do语句先执行后判断,循环体至少执行一次; -while语句先判断后执行,循环体可能不执行; -for 语句先判断后执行,相比while更加简洁;break和continue语句的区别:-break 表示终止循环的执行;-continue表示终止本次循环,进入下次循环;do 和break的妙用,示例...原创 2020-07-27 23:41:37 · 126 阅读 · 0 评论 -
2-6 分支语句
if语句用于根据条件选择执行语句,else不能独立存在且总是与他最近的if相匹配,else语句后可以链接其他if语句;if语句中的零值比较注意点:- bool型变量应该直接出现于条件中,不要进行比较;bool b = TRUE;if( b ){}else{}-变量和0值比较时,0值应该出现在比较符号的左边:int i=1;if( 0==i ){}else{}-float型变量不能直接和0比较,需要定义精度:#define EPSINON原创 2020-07-24 22:56:36 · 73 阅读 · 0 评论 -
2-5. 变量属性
C语言中的变量可以有自己的属性在定义变量的时候加上属性关键字:auto关键字:-auto即C语言中的局部变量的属性;-auto表明将被修饰的变量存储在栈上-编译器默认所有的局部变量都是autoregister关键字-register关键字指明将局部变量存储于寄存器中;-register变量只是请求寄存器变量,但是不一定请求成功;-register变量必须是CPU寄存器可以接受的值;-不能用&运算符获取register变量的地址;#include <s原创 2020-07-24 22:42:38 · 66 阅读 · 0 评论 -
2-4 类型转换
在C语言中的数据类型是可以相互转换--强制类型转换 -(Type)var_name; - (Type)vaule; 目标类型能够容纳目标值:结果不变 目标类型不能够容纳目标值:结果产生截断(不是所有都能强制转换成功)--隐式类型转换 编译器主动进行的类型转换,低类型到高类型的隐式类型转换是安全的,不会产生截断; 高类型到低类型的转换是不安全的,导致结果不正确; 类型从低到高如下: 标准C编译器的类型检查是比较宽松的,因此隐...原创 2020-07-23 23:46:15 · 107 阅读 · 0 评论 -
2-3 浮点数的秘密
先看下一下代码:int main(){ printf("sizeof(int) = %d\n",sizeof(int)); printf("sizeof(float) = %d\n",sizeof(float)); return 0;}打印结果如下:同样是占用4字节空间,为何int的表示范围是-2147483648~2147483647;而float类型的表示范围是-3.4*10^38~3.4*10^38;明显float表示的范围要比int广,这是为何?因...原创 2020-07-23 23:33:46 · 242 阅读 · 0 评论 -
2-2 有符号数和无符号数
数据类型的最高位用于表示数据的符号:-最高位为1,表明这个是个负数-最高位为0,表明这个数是正数;示例:#include <stdio.h>int main(){ char c = -5; short s = 6; int i = -7; printf("%d\n", ( (c & 0x80) != 0 )); printf("%d\n", ( (s & 0x8000) != 0 )); printf("%d...原创 2020-07-22 09:12:02 · 532 阅读 · 0 评论