《C专家编程》学习笔记(为什么程序员无法分清万圣节和圣诞节)

一、类型提升

1、整型提升

 1)、规则:抽象计算机把每个变量的值提升为int的长度,然后对两个int值进行运算,然后再对结果进行裁剪。(P173 表8-1)

2、浮点型提升

 1)、规则:抽象计算机把每个变量的值提升为double的长度,然后对两个double值进行运算,然后再对结果进行裁剪。(P173 表8-1)

3、数组提升(P173 表8-1)

  注意:函数的参数也会被提升。


二、原型

1、K&R C和ANSI C原型对比(P175  表8-2)

2、原型在什么地方会失败?

 1)、K&R C函数声明和K&R C函数定义(能够顺利调用,所传递的参数会进行类型提升)。

 2)、ANSI C函数声明(原型)和ANSI C函数定义(能够顺利调用,所传递的参数为实际参数)。

 3)、ANSI C函数声明(原型)和K&R C函数定义(如果使用一个较窄的类型就会失败!函数调用时所传递的是实际类型,而函数期望接收的是提升后的类型)。

 4)、K&R C函数声明和ANSI C函数定义(如果使用一个较窄的类型就会失败!函数调用时所传递的是提升后的类型,而函数期望接收的是实际类型)。

  注意:不要在函数声明和定义中混用新旧两种风格!


三、强制转换

1、如何进行强制转换?

 1)、方法

     A、简单的类型转换:在括号里写上新类型的名称,然后把它放在需要转换类型的表达式之前。

     B、复杂的类型转换

          I、一个对象的声明,它的类型就是想要转换的结果类型。

          II、删去标识符(以及任何如extern之类的存储限定符),并把剩余的内容放在一堆括号里。

          III、把第II步产生的内容放在需要进行类型转换的对象的左边。

2、进行强制转换的目的?

 1)、类型转换。

 2)、消除类型歧义。

 

四、编程技巧

1、不需要按回车键就能得到一个字符的方法

 1)、kbhit函数——如果一个字符正在等待被都读取,它就会发出提示。

 2)、Micorsoft和Borland的C编译器提供了getch()(或者getche(),它可以在字符被读取的同时显示与屏幕上)来获取单个字符,而不用等待整行结束。

 3)、UNIX系统中可以用stty程序实现。

 4)、把I/O设置为raw状态可以实现堵塞式读入——如果终端没有字符输入,进程就一直等待,知道有字符输入为止。如果需要阻塞式读入,可以使用ioctl()系统调用。

 注:轮询与非轮询读取方式的概念。使用errno确认调用库函数或调用系统师傅遇到了问题。

2、散列表


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值