我正在学习c,并在printf函数中遇到vs代码错误。我没发现我哪里错了。请帮我解决一下

问题描述 投票:0回答:3

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 没有正确执行?

c printf scanf
3个回答
2
投票

传递给

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()
匹配


1
投票
当你写了 3 %d 时,你需要 3 个不同的格式说明符,分别添加 a 和 b,每个总和用逗号分隔。 希望有帮助


0
投票
您的错误是由于误解了 printf 函数如何将格式说明符(如 %d)与变量(如 a、b 和 sum)关联起来。变量告诉 printf 要打印什么,格式说明符告诉 printf 如何打印它以及在哪里打印它。由于 printf 需要所有三部分信息来打印变量,因此格式说明符的数量必须等于 printf 语句中变量的数量。

格式说明符和值之间的关联基于它们在 printf 语句中出现的顺序。要执行您想做的操作,您可以使用以下 printf 语句: printf("%d 和 %d 之和 = %d", a, b, sum );

第一个 %d 与第一个变量 (a) 关联,第二个 %d 与第二个变量 (b) 关联,第三个 %d 与第三个变量(总和)关联。

使用修改后的 printf 语句的程序的输出是: 4 和 5 之和 = 9

© www.soinside.com 2019 - 2024. All rights reserved.