Issue
This Content is from Stack Overflow. Question asked by Jashan K
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 ;
}
This is the output I got but it is not correct. Please tell me where I am wrong ?
Enter a: 4
Enter b: 5
Sum of 9 and 6422356 = 4200939
I want to get ‘b’ (which is the second number) to be printed in the formatted print.
but it is not scanning ‘b’ correctly. Why it is scanning ‘8’ at the place of ‘4’ and ‘6422356’ at the place of ‘5’? The output should be Sum of 4 and 5 = 9. Tell me what I should do.
When I use printf( "Sum of a and b = %d",sum );
instead of printf( "Sum of %d and %d = %d",sum );
the output is correct
Enter a : 4
Enter b : 5
Sum of a and b = 9
What is the mistake in the previous code? Have I mistaken in the syntax or what? Why %d is not executing properly?
Solution
The quantity of variables passed to printf()
does not match the quantity of variables in the format specifier
Three versions to remedy your problem:
// 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 );
You must provide a variable (of the right type) for every "%d" (or other formatting specifier) for printf()
to match-them-up
This Question was asked in StackOverflow by Jashan K and Answered by Fe2O3 It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.