未使用的变量错误

时间:2014-09-09 19:08:19

标签: c variables

我是编程新手,我目前正在学习C语言。这是我的代码。我尝试了不同的修复方法,例如确保我有分号。但是,当我在在线编译器中检查我的代码时,我总是得到未使用的变量,而数据定义没有类型或存储类。我保证,任何信息都会对我有所帮助,所以请告诉我您认为可能的解决方案。

//C code
//This program will calculate the average speed of passing cars using a WHILE-END loop       
//Developer: Jasmine Tucker
//Date: 7 Sept 2014
#include <stdio.h>
Int main ()
{
    /* define variable */
    int average_speed;
    int car_count;
    int car_speed;
};
/* set variable values */
average_speed= 0;
car_count=0;
car_speed=0;

/*WHILE-END loop */
WHILE (car_count > 0)
{
    printf (“Enter the car’s speed %s:”, car_count);
    scanf (“%d”, & car_speed);
    average_speed= car_speed/ car_count
    car_count++;
}
printf (“\n The average speed is %d miles per hour. \n”, (average_speed));
return 0; 
}

3 个答案:

答案 0 :(得分:3)

少数事情:

Int main()

应该是

int main()

这可能是一个简单的错字,或语法检查的不幸副作用。

通过研究C中的标准类型,你可能做得很好。 除了修饰符之外,并没有很多,除了特殊类型_Bool, _Complex, _Imaginary,它们都是小写的。 (对于关键字也是如此)。 存储类是指不太常用的东西,或者至少超出了本程序的范围(自动,寄存器,静态,外部)。

以下定义也使用int类型,因此我将在此处重现它们[原文如此]。

/* define variable */
int average_speed;
int car_count;
int car_speed;
};
/* set variable values */
average_speed= 0;
car_count=0;
car_speed=0;

正如其他人所提到的,在声明三个变量之后会有一个无关的大括号。 }; (注意他看起来多么悲伤。) 如果你来自一种在花括号后需要分号的语言,你就有一些难以打破的习惯。

在任何情况下,注释掉都应该删除几个错误:

/* }; */

因为这有效地关闭了main()

的阻止

正如用户haini指出的那样,您实际上可以将变量定义拉到main()之外,允许任何函数访问它们。 (跨源文件使用会显示前面提到的extern)。 一些程序员使用特殊的变量[pre | suf]修正来区分全局变量和局部变量。

int g_average_speed;
int g_car_count;
int g_car_speed;

由于这些变量需要在使用前初始化,您可以在定义中执行此操作:

int g_average_speed = 0;
int g_car_count = 0;
int g_car_speed = 0;

通常不鼓励使用全局变量,而是更喜欢基于参数的变量共享,这在引入多个函数后更有意义。


如前所述,&#39; WHILE&#39;不是关键字,而while是关键字。与变量类型一样,关键字列表非常短,主要是小写。最好知道关键字,以避免将它们用于变量/函数命名。

就逻辑而言,while-loop将永远不会开始,因为您已将car_count > 0初始化为0,因此无法满足表达式car_count

虽然很容易对某个值进行硬编码,但您可能希望将另一个变量(例如max_cars)设置为上限并检查car_count < max_cars。 (不要忘记你从0开始计算)。

/* define variable */
int max_cars = 10;
/* rest of variables, init */
while( car_count < max_cars )

现在,除了有趣的语录之外&#39>“&#39;这会给你带来麻烦,average_speed = car_speed / car_count再次指出scanf()丢失的分号,你应该尝试在心理上逐步完成你的循环。永远不要忘记用户本身就是邪恶的,并且在被允许与程序交互时会尝试不可见的值(int)。使用%dunsigned时,负值和0不是不可能的,但您可能会期望某些车辆停在&#39;因此速度为0.在该行下,可以使用%u修饰符和if

在任何情况下,养成用户输入消毒和/或给用户选择退出的选择(即&#34; TYPE -1打破...&)是一件好事。 #34;),并使用break检查无效或退出代码。 (average_speed可能是在这种情况下要追求的关键字)

您的car_count计算似乎并不合适。不要忘记你将值存储到整数中,这样你就会有一些舍入错误。

首先想一想当你的初始案件到来时会发生什么 - car_count == 9是什么,以及当你除以那个值时会发生什么?

然后,考虑最后的情况,(假设你的上边界是10)car_speed / car_count。您将average_speed分配给/* define variable */ int total_speed = 0; 。这真的是你想要的吗?

您可以通过“跟踪”来最小化舍入错误和更难计算。总速度,只有一个平均计算。

while

total_speed += car_speed; 循环中:

total_speed = total_speed + car_speed;

average_speed = total_speed / (car_count - 1);

然后在循环之外:

car_count

(调整到average_speed是必要的,因为值在最后一个循环后递增。) 注意:在此有限示例中,printf()变量可能不是必需的,除非在{{1}}之外使用。

答案 1 :(得分:1)

我看到您的代码中存在一些问题。

  1. 代码永远不会进入while循环。如果将它初始化为0,它将永远不会大于0,因此永远不会进入循环。

  2. 即使它进入循环,这也是一个无限循环。继续向变量添加一个将使变量始终大于0,因此永远不会退出循环。

  3. MAJOR ONE:您的变量位于main之内,但您在main之外使用它们!

    #include <stdio.h>
    Int main ()
    {
        /* define variable */
        int average_speed;
        int car_count;
        int car_speed;
    **};**
    
  4. (不确定这个)但你在方法声明中的单词int中有一个大写的I,而大写的WHILE应该是while。

答案 2 :(得分:-1)

不在main()函数中的代码会导致错误。

//C code
//This program will calculate the average speed of passing cars using a WHILE-END loop       
//Developer: Jasmine Tucker
//Date: 7 Sept 2014
#include <stdio.h>

/* define variable */
//You Can define global variables or local variables. If you want to use them outside your
//function you Need to declare them globally as done here

    int average_speed;
    int car_count;
    int car_speed;

//This is where the Magic happens. If you execute your program it will jump to the main
//function and execute whatever is in there
int main ()
{

    /* set variable values */
    average_speed= 0;
    car_count=0;
    car_speed=0;

    /*WHILE-END loop */
    //The while Loop is not a function, you Need to put it in main() so it gets executed
    while(car_count > 0)
    {
        //You did use very strange signs here. The correct ones are These: ""
        printf("Enter the car’s speed %s:", car_count);
        scanf("%d", &car_speed);
        average_speed= car_speed / car_count; //You Forget a semicolon indeed ;-)
        car_count++;
    }
    printf("\n The average speed is %d miles per hour. \n", average_speed);
    return 0; 
} //semicolons at the end of a function are not used in C. They are used if you want to define a structure.

我强烈建议你从基础书籍/维基到C编程开始。这是一个很好的(至少对我而言)开始:http://en.wikibooks.org/wiki/C_Programming/Intro_exercise