tcpl 阅读笔记 8

 

 

头文件 <string.h>定义了一组与字符集(不管是 asc II字符集还是 EBCDIC字符集)无关的测试与转换函数。例如 tolower(c) 将c 转换为小写形式(如果c 是大写的话),又例如测试语句 c >= '0' && c <= '9' 可以使用库函数 isdigit(c) 来代替

在 if 、while 、for 语句的测试条件中,“非 0” 意味着真

一般来说,数学函数 (如在标准头文件 中定义的函数) 使用双精度(double )类型的变量。
使用float 主要是为了在使用较大的数组时节省存储空间,有时也为了节省机器执行时间(双精度运算特别费时)

赋值时也要进行类型转换,赋值运算符右边的表达式的值需要转换为左边变量的类型。这个时候如果右边是“较高”的类型,而左边是“较低”的类型,那么可能会出现“数据的损失”.

在函数调用的时候,编译器将对实参进行自动强制类型转换

强制类型转换 : (类型名)表达式                   例如库函数 sqrt的参数为double 类型
int n;
sqrt((double)n);
在上例中,强制类型转换只是生成一个由 n 转换后的double的值,n本身的值并没有改变。

 

对于 习题 2-3 ,习题集中的解答十分的精炼和高效,有 标准库函数实现的风格, 非常值得看一下。

前置++和后置++

如果n 的值是5 ,则

A   表达式   x = n++; 执行后的结果: x 的值是 5, n的值是 6
B   表达式   x = ++n; 执行后的结果: x 的值是 6, n的值是 6

自增与自减运算符只能作用于变量。 类似于 (i + j)++ 之类的表达式是非法的

在 vc 编译器中, 函数中变量的声明一定要放在该函数体的最前面,否则编译报错。

c 语言中提供了6 个按位操作运算符,这些运算符只能作用于整形操作数,即只能作用于无符号或者带符号的char、short、int 与 long 类型。    这六个位操作符是  &   |  ^  <<  >>  ~

m *= n +1; 的含义是 m = m * (n + 1) ,而不是 m = m * n +1;      很好理解,因为赋值运算符 *= 的优先级低于 算术运算符 + 

赋值表达式的类型是他的左操作数的类型,其值是赋值操作完成后左操作数的值(之所以不说是其赋值运算符右边的表达式的值,因为有可能发生类型转换)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值