printf加’\n’的好处
linux中命令行默认是行缓冲,当遇到换行符(\n)才会输出,否则就会缓冲起来,程序终止或者缓冲区满了才输出。
不同系统的换行符
windows:\r\n (CRLF)
linux:\n (LF)
iOS:\r (CR)
scanf中的坑
scanf不会接收最后的\n,\n继续留在标准输入中,导致下次scanf的时候拿到的是\n,而不是真正的数据,scanf的很多错误就是这样来的。
使用typedef的意义
1、简化类型,让程序更容易理解和书写
2、创建平台无关类型,便于移植。
例如程序用到最高精度的浮点类型。平台A最高为float,平台B最高为long double ,就可以这样定义
#ifdef PLATFORM_A
typedef float myMax;
#endif
#ifdef PLATFORM_B
typedef long double myMax;
#endif
强制类型转换会改变原来的变量的值吗?
原来的变量得值不会改变。
float a = 12.34;
int b = (int)a;
上面的强制类型转换,然后赋值,可以分为4步:
step1:构建临时变量x
step2:将a的整数部分赋值给x
step3:将x赋值给b
step4:销毁x
所以不会更改原变量的值。
debug宏的使用方法
#ifdef DEBUG
#define debug(fmt,args...) printf(fmt,##args)
#else
#define debug()
#endif