scanf函数
Scanf函数返回值:返回读入的项目的个数,如果没有读入项目就返回0,如果检测到文件尾返回EOF。
对于%d读入时:跳过空白符,换行符,制表符。如果遇到+ /-/数字字符。就读入该字符并往下读,直到遇到一个非数字字符。将这个非数字的字符放回缓冲中去。下一次scanf函数就从那个字符开始读取。如果使用了字段宽度,那么scanf在第一个空白字符处或字段宽度(二者先到达的地方停止读入)
如果第一个非空白字符不是数字字符那么scanf就会把读到的字符放回缓冲中,没有赋给对应的变量任何东西。以后再用scanf时如果只有%d格式符,那么就会死在那里(结束那次scanf函数的执行)。
如果在执行scanf函数时从键盘敲入的是一个数字字符,但是格式符是%c,那么程序会把第一个数字的每一位当成一个字符来处理。
%x和%f会让scanf可以识别小数点,和a - f的字符当成数字字符
%s格式符把空白字符以外的所有的字符读入,必须存到一个数组中,会在所有的一个数组元素的后面一个单元里面放入一个‘\0’字符。如果包括字段宽度,那么一个格式符控制,读到字段宽度处或第一个空白字符处。
%c格式符会把所有的字符同等看待,空白符也当成一个普通字符处理,读到任何一个字符(包括换行符,空白字符等)赋给一个变量。
一般scanf用在输入数字,或所有格式符混合使用的情况下。
求两个数的平均数的最好写法:
(middle = left+(right-left)>>1 ) (对int类型数据,运算范围是 231-1) 当运算的两个数都非常大的时候,可以避免寄存器中的数据溢出。
如果写成(middle = (left+middle)/2)最大范围要比前一种方法是1/2.