数据类型冲突时出错 intmain(){ 长INTA; 长int b; 长INTC; 长整数d; 长内特; scanf(“%lld%lld%lld%lld%lld”、&a、b、c、d和e); int i,j; 长整数和=0; long int largestsum=0; long int smallestsum=0; 长整数a[5]={a,b,c,d,e}; 对于(i=0;i
什么是数据类型冲突时出错 intmain(){ 长INTA; 长int b; 长INTC; 长整数d; 长内特; scanf(“%lld%lld%lld%lld%lld”、&a、b、c、d和e); int i,j; 长整数和=0; long int largestsum=0; long int smallestsum=0; 长整数a[5]={a,b,c,d,e}; 对于(i=0;i,c,types,C,Types,什么是a? 它是第2行中的长整数吗?long int a; 或者它是一个长整数数组,如第12行长整数a[5]={a,b,c,d,e}; 当编译器看到第12行时会感到困惑,假设您再次执行相同的操作(它可能会容忍),然后看到您使用的是不同的类型(数组而不是长整型)。 他总结道:“这些类型不同,这是类型冲突。” 解决方案: 将数组重命名为“liArray”,无论引用到哪里。 Et voila:gcc-Wall-Toy.c不会抱怨,运行它也不会崩溃 在阅读了评论之后,他们有更多的话要说,如何让程序真正做
a
?它是第2行中的长整数吗?
long int a;
或者它是一个长整数数组,如第12行
长整数a[5]={a,b,c,d,e};
当编译器看到第12行时会感到困惑,假设您再次执行相同的操作(它可能会容忍),然后看到您使用的是不同的类型(数组而不是长整型)。他总结道:“这些类型不同,这是类型冲突。” 解决方案:
将数组重命名为“liArray”,无论引用到哪里。 Et voila:
gcc-Wall-Toy.c
不会抱怨,运行它也不会崩溃
在阅读了评论之后,他们有更多的话要说,如何让程序真正做到它应该做的。下面我只做了数组重命名
int main() {
long int a;
long int b;
long int c;
long int d;
long int e;
scanf("%lld %lld %lld %lld %lld",&a,&b,&c,&d,&e);
int i,j;
long int sum = 0;
long int largestsum =0;
long int smallestsum = 0 ;
long int a [5] = {a,b,c,d,e};
for ( i =0;i<5;i++){
for (j = 0;j<5;j++){
if (a[j]!=a[i]){
sum+=a[j];
}
}
if (largestsum <sum){
largestsum = sum;
}
if (smallestsum>sum){
smallestsum = sum;
}
}
printf("%ld %ld",largestsum,smallestsum);
return 0;
#包括
int main()
{
长INTA;
长int b;
长INTC;
长整数d;
长内特;
扫描(“%ld%ld%ld%ld%ld”、&a、b、c、d和e);
int i,j;
长整数和=0;
long int largestsum=0;
long int smallestsum=0;
long-int-liArray[5]={a,b,c,d,e};
对于(i=0;i可能会使用更具描述性的变量名?%lld
是long
%ld
是long
。最大和是什么?你是指最大和的连续子数组吗?发布的代码不会编译。有几个原因,包括调用时缺少必要的\include
语句在调用任何scanf()
函数族时,始终检查返回值(而不是参数值)以确保操作成功。(并修复格式说明符以匹配参数),即if(5!=scanf(“%ld%ld%ld%ld%”,&a,&b,&c,&d,&E)){//handle error event}
发布的代码将a
声明为long int
。不久之后,发布的代码将a
声明为数组。这会导致编译器发出错误
消息。您为什么发布未干净编译的代码?您的问题是运行时问题,而不是编译问题,因此没有发布显示问题的代码。你是否希望我们对你的实际代码看起来像什么?我也改变了<代码> %LLD >代码> %LD ,但是这与问题无关。非常感谢大家,这是愚蠢的错误。听起来像这样实际上解决了你的问题。请考虑接受这个问题。问题;即设置“勾选”。
#include <stdio.h>
int main()
{
long int a;
long int b;
long int c;
long int d;
long int e;
scanf("%ld %ld %ld %ld %ld",&a,&b,&c,&d,&e);
int i,j;
long int sum = 0;
long int largestsum =0;
long int smallestsum = 0 ;
long int liArray[5] = {a,b,c,d,e};
for ( i =0;i<5;i++){
for (j = 0;j<5;j++){
if (liArray[j]!=liArray[i]){
sum+=liArray[j];
}
}
if (largestsum <sum){
largestsum = sum;
}
if (smallestsum>sum){
smallestsum = sum;
}
}
printf("%ld %ld",largestsum,smallestsum);
return 0;
}