C语言回炉(1)


---1.三字母词:

-------------------各书中所介绍的9个三字母词在vs2012下实测已经失效 在网上查了查原来是因为以前有些环境或者键盘上没有对应的字符 所以给出了这种解决方法 没有深究


---2.volatile关键字:

-------------------防止编译器优化 每次到内存中读取数据 防止因为优化复制数据副本到寄存器 每次读取从寄存器里直接读取 所导致原数据改变了并不能发现


---3.函数返回值隐式声明:

-------------------函数在缺省返回值时会被隐式声明为整型 在有些情况下会导致非常隐蔽的错误 尽量不要依赖


---4.链接属性:

-------------------外部 / 内部 / 无

-------------------全局变量和函数定义默认为外部链接属性 局部变量定义默认为无链接属性

-------------------4.1 static 和 extern 关键字:

---------------------------------------------------------static用于定义全局变量和函数时将改变他们的链接属性 使所定义的对象只能在本文件中使用  用于定义局部变量时并不改变连接属性和作用域 而是改变他们的存储类型 从自动变量改为静态变量

---------------------------------------------------------extern用于定义局部变量时可引用全局或其他文件定义的变量


---5.移位操作:

-------------------对无符号和有符号进行左移位操作 移入位用0进行填充 右操作时无符号数进行逻辑移位 有符号数进行逻辑移位或算术移位 根据编译器决定 实测vs2012对有符号数进行的是算术移位


---6.sizeof:

-------------------sizeof并不用计算表达式中的值 所以例如sizeof(a=b+c) 计算a的字节大小 但并不把作赋值操作


---7.逗号操作符:

-------------------表达式所执行的结果为逗号操作符最后一个表达式的值 对于一些while循环进行简化有渺小的用处


---8.整形提升

-------------------字符型和短整型在使用时会被转换为整型计算 结果进行截断再储存回原来的类型中 可能会存在隐患


---9算数转换:

-------------------不同数据类型的数据进行比较或运算时 会进行数据类型的转换 一般是向着浮点精度更高 长度更长的类型做转换 转换规则通俗来讲是 用转换后的类型来解析转换之前类型数据的二进制数 解析之后就得到了转换后的值 由于计算机一般用补码表示负数 所以像unsigned int类型-1这样的数转换为signed int会变成一个非常大的数




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值