提问人:Achyut Anand 提问时间:2/22/2023 更新时间:2/23/2023 访问量:56
我目前是编程新手。传递“scanf”的参数 1 使指针从整数而没有强制转换 [-Wint-conversion],是我的错误
I'm currently new to programming. passing argument 1 of 'scanf' makes pointer from integer without a cast [-Wint-conversion], is my error
问:
#include<stdio.h>
#include<string.h>
int main()
{
int a = scanf(printf("Enter your first no."));
int b = scanf(printf("Enter your second no."));
int c = a + b;
printf( "your sum is : %d ", c );
return(0);
}
我尝试修改代码几次,但没有用。
答:
0赞
Sandrious
2/22/2023
#1
您以错误的方式使用 scanf() 函数。在 scanf() 函数的最后面,你有控制字符串,以 “ 开头和结尾,并且必须包含一个或多个格式说明符。每个格式说明符都对应于特定的数据类型。检查什么是“格式说明符”,并检查每种数据类型的格式说明符是什么。在每个格式说明符之前留出 1 个空位置是一个很好的提示。如果您使用多个格式说明符 - 那么您只需用 1 个空格分隔它们。
在控制字符串之后,放置一个逗号“,”,然后是变量的地址。当你把符号“&”和变量的名字放在一起时,你就会这样做。请记住,格式说明符必须与变量所属的数据类型相对应。
因此,要使代码正常工作,您必须像这样编辑它:
#include<stdio.h>
/*#include<string.h> - You don't need this header file*/
int main()
{
int a, b; //Defining multiple variables of same type.
printf("Enter value for a: ");
scanf(" %i", &a);//Assigning value to a;
printf("Enter value for b: ");
scanf(" %i", &b);//Assigning value to b;
printf("Your sum is: %i", (a+b));//You don't need third variable, to store the sum.
return(0);
}
专业提示:当您使用“%d”和“%i”格式说明符进行输入时(即“scanf()”),这是有区别的。如果使用“%d”,则只能以十进制数字系统(所谓的“以 10 为基数”)输入值。如果使用“%i”,则可以在八进制、十进制或十六进制数字系统中输入整数值。
评论
scanf