1、scanf()
scanf用于读取键盘输入的内容,输入的内容会先被放在缓存区,按下最后一个回车后,通过占位符对输入的数据格式化处理后,才会被读入变量实际存储的地址。对于整型数据,输入数据的时候,应按照双引号里面的占位符之间的格式字符(如逗号)对应输入格式字符,(占位符前面相邻的空格不算格式字符,他在系统格式化的时候会被删掉),需要注意的是,在占位符之前的所有字符(包括空格)均需要一个字符不差的在键盘输入,除非占位符前面相邻的地方有一个或多个空格,此时这些空格可以在输入的时候忽略。
若输入的内容为%c即字符型,则不会像整型那样过滤空格,因此输入的时候不需要用空格分隔输入的数据,空格也会被当作字符变量存入变量中。
另外若双引号内有\n则输入函数不能正常退出,需要再输入一组数据按回车后才能退出输入,但是后面输入的数据不会在变量中出现,。
附: 双精度小数的输入和输出方法
用scanf输入双精度小数时,占位符应使用%lf;用printf输出双精度小数时,占位符用%f即可。
2、printf()
输出函数是从右向左压栈的,i++在printf中的运算规则:先对i进行复制,副本是另一个变量,所以输出时不会计算过程取多少最后就输出多少;++i在printf中的运算规则:在输出前直接对i进行运算,然后存入栈中。
在此例子中,第一个是i,输出前是0,输出后也是0,直接输出i=0;第二个是i++,输出前是0,输出后是1,此时输出的是另一个变量i的副本i0=0;第三个是++i,输出前是1,输出后是2,直接输出变量i=2;第四个是i++,输出前是2,输出后是3,输出的是副本i1=2;第五个是++i,输出前是3,输出后是4,直接输出i=4;最后,因为最后变量i为4,所以最后输出42404。