scanf()函数里的第一个%d是表示从输入读入一个整数,中间的%*c表示跳过输入的一个字符,然后后面第二个%d表示读入一个整数,所以输入45-12,第一个就把读入45赋值给变量a,然后跳过字符'-',再把输入的12读取赋值给变量b,所以最后打印他们的和是57。
参考资料:
C Primer Plus(第6版)中文版 -第4章 -4.4printf()和scanf() -4.4.6 printf()和scanf()的(*星号)修饰符 第96页。
#include <stdio.h>
int main(void){
int a,b,sum;
scanf("%d%*c%d",&a,&b);
sum=a+b;
printf("sum=%d",sum);
return 0;
}
在scanf() 中,当把*放在%和说明符字母之间时,它使用函数跳过相应的输入程序
最终sum的结果是“-”前后数值之和,这是由你的程序决定的(第四行)。至于输入的“-”,由于在scanf() 中,当把*放在%和说明符字母之间时,scanf跳过相应的输入程序,所以对应程序是无意义的。
就是输入两个整数啊,有那个*是用来隔开的,scanf是对a和b赋值,然后sum=a+b;最后printf输出sum=57