回复 4楼 尔二
首先要弄清楚的是:scanf() 读取键盘输入并非是键盘敲一个就读一个,而是当按下回车后就将控制台的字符写到缓冲区里,scanf再从缓冲区里一次只读一个字符地读取全部键盘输入的字符,赋给对应的变量(你输入时,数据中夹带逗号等其他非数据字符,计算机可不认识它是不是数据,会原样地赋给变量),缓冲区没数据时scanf就等待用户的输入。比如从键盘输入 123,它表示的并不是数字 123,而是字符 '1'、字符 '2' 和字符 '3'。
操作系统在接收键盘数据时都将它当成字符来接收的。这时就需要用“输入控制符”将它转化一下。%d的含义就是要将从键盘输入的这些合法的字符转化成一个十进制数字。经过 %d 转化完之后,字符 123 就是数字 123 了。
第二个要弄清楚的是:&是一个取地址运算符,&后面加变量名表示“该变量的地址”,所以&i就表示变量 i 的地址。&i又称为“取地址i”,就相当于将数据存入以变量 i 的地址为地址的变量中。
scanf 的使用小结:
1 在 scanf 的“输入参数”中,变量前面的取地址符&不要忘记。
2 scanf 中双引号内,除了“输入控制符”外什么都不要写。
3 “输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。
4 “输入控制符”的类型和变量所定义的类型一定要一致。对于从键盘输入的数据的类 型,数据是用户输入的,程序员是无法决定的,所以在写程序时要考虑容错处理。
5 使用 scanf 之前先用 printf 提示输入。