C4700 未初始化的局部变量"number2"和"number3"

C4700 uninitialized local variable "number2" and "number3"

本文关键字:number2 number3 局部变量 初始化 C4700      更新时间:2023-10-16

我的visual studio 2015有这个问题。错误出现在第15行。突然它说我还没有初始化变量,我不知道如何初始化它们

// Average.cpp. : Defines the entry point for the console application.
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
int main()
{
    int number1, number2, number3;
    double average;
    cout << "Enter three integers and I will display the average" << endl;
    cin >> number1, number2, number3;
    average = (number1 + number2 + number3) / 3.0;
    cout << "The average is" << average << endl;
    return 0;
}

这一行不符合您的要求:

cin >> number1, number2, number3;

您可能想从cin中读取3个数字,这是通过以下方式完成的:

cin >> number1 >> number2 >> number3;

在当前的形式中,它被计算为

(cin >> number1), number2, number3;

这个表达式的结果是number3,它没有在你的程序中初始化。number2是表达式的一部分,也没有初始化,所以编译器也警告它,尽管值被丢弃。

逗号操作符在c++中分隔表达式并将它们连接成一个更大的表达式,因此语句cin >> number1, number2, number3 将从cin 读取表达式number1, number2, number3相当于(cin >> number1), number2, number3,这没有多大意义,当然不是您想要做的。

试试cin >> number1 >> number2 >> number3

这是c++的一个奇怪的"特性",如果没有这些特性,c++可能会好得多。

如上所述,这应该可以工作:

#include <iostream>
using namespace std;
int main()
{
    // ...
    cin >> number1 >> number2 >> number3; // here is the fix
    // ...
    cout << "The average is" << average << endl; // same as you did here
    return 0;
}