int main (){
int a, b, sum;
printf("Enter a : ");
scanf("%d", &a);
printf("Enter b : ");
scanf ("%d", &b );
sum= a+b;
printf( "Sum of %d and %d = %d",sum );
return 0 ;
}
这是我得到的输出,但不正确。请告诉我哪里错了?
Enter a: 4
Enter b: 5
Sum of 9 and 6422356 = 4200939
我想在格式化打印中打印 'b' (这是第二个数字)。 但它没有正确扫描'b'。为什么在'4'处扫描'8',在'5'处扫描'6422356'?输出应该是 4 和 5 之和 = 9。 告诉我应该做什么。
当我使用
printf( "Sum of a and b = %d",sum );
而不是 printf( "Sum of %d and %d = %d",sum );
时,输出是正确的
Enter a : 4
Enter b : 5
Sum of a and b = 9
前面的代码有什么错误?我是语法错误还是什么?为什么 %d 没有正确执行?
传递给
printf()
的变量数量与 格式说明符中的变量数量不匹配
三个版本可以解决您的问题:
// print the NAMES of the variables just entered
printf( "Sum of a and b = %d",sum );
// print the VALUES of the variables just entered
printf( "Sum of %d and %d = %d", a, b, sum );
// or print the NAMES and VALUES of the variables just entered
printf( "Sum of a(%d) and b(%d) = %d", a, b, sum );
您必须为每个“%d”(或其他格式说明符)提供一个变量(正确类型),以实现
printf()
匹配
格式说明符和值之间的关联基于它们在 printf 语句中出现的顺序。要执行您想做的操作,您可以使用以下 printf 语句: printf("%d 和 %d 之和 = %d", a, b, sum );
第一个 %d 与第一个变量 (a) 关联,第二个 %d 与第二个变量 (b) 关联,第三个 %d 与第三个变量(总和)关联。
使用修改后的 printf 语句的程序的输出是: 4 和 5 之和 = 9