为什么阅读《C Primer Plus》第六版
准备好好研究下redis源码,但是很久没用c语言写代码了,平时工作主要用java和js。
所以准备重新阅读学习下c语言经典书籍:C Primer Plus。
更好的阅读redis源码。
读书笔记
/* platinum.c -- your weight in platinum */
#include
int main(void)
{
float weight; /* 你的体重 */
float value; /* 相等重量的白金价值 */
printf("Are you worth your weight in platinum?\n");
printf("Let's check it out.\n");
printf("Please enter your weight in pounds: ");
/* 获取用户的输入 */
scanf("%f", &weight);
/* 假设白金的价格是每盎司$1700 */
/* 14.5833用于把英磅常衡盎司转换为金衡盎司[1]*/
value = 1700.0 * weight * 14.5833;
printf("Your weight in platinum is worth $%.2f.\n", value);
printf("You are easily worth that! If platinum prices drop,\n");
printf("eat more to maintain your value.\n");
return 0;
}
运行输出
Are you worth your weight in platinum?
Let's check it out.
Please enter your weight in pounds: 156
Your weight in platinum is worth $3867491.25.
You are easily worth that! If platinum prices drop,
eat more to maintain your value.
计算机存储的两大基本类型: 整数类型和浮点数类型
现在许多cpu都包含浮点处理器,缩小了浮点运算和整数运算的速度差距。
计算机的字长越大,其数据移动越快,允许的内存访问也更多,32位最大内存限制是4096。
整数7二进制是111,在8位字节中存储:00000111。
整数溢出是未定义的行为,需要小心溢出。
char类型用于储存字符,但是从技术层面看,char是整数类型。
因为char类型实际上存储的是整数而不是字符。计算机使用数字编码来处理字符。
C语言把1字节定义为char类型占用的位数,因此无论16位还是32位系统,都可以使用char类型。
char itable=65,对于ASCII,这样做没问题,但是不是一种好的编码风格。
char nerf = ‘\n’ 打印变量效果是:另起一行。
转义序列 | 含义 |
---|---|
\a | 警报 |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直指标符 |
\\ | 反斜杠 |
\’ | 单引号 |
\" | 双引号 |
\? | 问号 |
\Ooo | 八机制oo必须是有效的八机制数 |
\xhh | 十六进制,hh必须是有效的十六进制数 |
printf()函数用%c指明待打印的字符。
如果用%d来打印char类型变量,将会打印的是一个整数。
C语言允许在关键字char前面使用signed或unsigned。这样无论编译器默认char是什么类型,
signed char表示有符号类型,而unsinged char表示无符号类型。char类型处理小整数时很有用。
如果只处理字符,无需使用任何修饰符
yups: java程序员大手大脚惯了,都没了signed/unsigned这样的概念了。