C语言程序设计键盘的输入输出

img


请问一下这个为什么输出是57啊 ,不太明白 ,scanf函数里面的字符串是什么意思 刚学不太懂 求解 ,非常感谢!

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; 
} 

img

在scanf() 中,当把*放在%和说明符字母之间时,它使用函数跳过相应的输入程序

最终sum的结果是“-”前后数值之和,这是由你的程序决定的(第四行)。至于输入的“-”,由于在scanf() 中,当把*放在%和说明符字母之间时,scanf跳过相应的输入程序,所以对应程序是无意义的。

就是输入两个整数啊,有那个*是用来隔开的,scanf是对a和b赋值,然后sum=a+b;最后printf输出sum=57