• getchar()会让程序暂停,等待输入。(用于窗口一闪而过的情况)

  • printf中,%+字母 表示待打印的量,其中
  • %d---(十进制)整数
  • %u---无符号整数(unsigned int)
  • %o---(八进制)整数
  • %f---浮点数(带小数的数?)
  • %e---科学计数法表示的浮点数
  • %c---字符
  • 可加前缀l表示long,如%ld、%lf、%le
  • 可加前缀h表示short,如%hd、%hu、%ho(详见第4章)

  • 用int声明整数
  • 用float声明浮点数
  • 用char声明字符变量
  • _Bool声明布尔值(true或false)
  • _complex声明复数
  • _Imaginary声明虚数

  • 16位的范围-32768~32767(unsigned 0~65535)
  • 32位的范围-2147483648~2147483648(unsigned 0~4294967296)(10位数)
  • 64位的范围
    -9223372036854775808~+9223372036854775808(19位数)
    (0~18446744073709551615)(20位数)

  • short的占用的存储空间不能多于int
  • long占用的存储空间不能少于int
  • 个人计算机上最常见的设置是,long long占64位,long占32位,short占16位,int占16位或32位
  • int类型被认为是计算机处理整数类型时最高效的类型。因此,在short和int类型的大小不同的计算机中,用int类型的参数传递速度更快。

  • char的基本声明方式
 char grade = 'B';  \\此处的grade是变量名
  • 奇怪的是,C语言将字符常量视为int类型而非char类型。在int为32位、char为8位的ASCII系统中,字符常量'B'对应的数值66被储存在一个32位的储存单元中,然后再赋予给8位的char变量grade。
  • 假如我们定义一个字符常量'fate'(即把4个独立的8位ASCII码储存在一个32位存储单元中),再把这样的字符常量赋予给一个char字符变量,那就只有后8位有效,所以最终这个变量的值是'e'。

  • 非打印字符
转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011

(TAB位置通常是第1个、 第9个、 第17个、 第25个等字符位置)

  • c提供两种方法来表示这些字符
  1. 使用ASCII码
char beep = 007;

2.使用转义序列

char beep = '\a';

  • 由于| " | ' | \ |这些字符用于定义字符常量,是printf()函数的一部分,若直接使用它们会造成混乱,所以也用转义序列表示。如
/*打印一下内容
"You \ are good "
*/
printf("\"You \\ are good\"");
//代码变黑的地方就是转义序列

  • 如果在转义序列和ASCII码中来选一个,那应该选择转义序列,因为转义序列在不支持ASCII码的系统中也适用,可移植性更高。

  • C标准规定,float类型必须至少能表示6位有效数字,且取值范围至少是10-37~10+37
  • 通常,系统储存一个浮点数要占用32位。其中8位用于表示指数的值和符号,剩下24位用于表示非指数部分(也叫作尾数或有效数)及其符号。
  • 还有double和long double,表示更高精度的浮点数