2016-08-24 47 views
-3

我的視覺工作室2015有這個問題。錯誤發生在第15行。突然說,我沒有初始化變量,我不知道如何初始化它們。C4700未初始化的本地變量「number2」和「number3」

// 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; 
} 
+4

的','運營商不你在想什麼呢! – drescherjm

+1

問題出在行前:'cin >> number1,number2,number3;'。 'number2'和'number3'沒有被初始化,因爲它們被解析爲單獨的語句。使用'cin >> number1 >> number2 >> number3;'代​​替。投票結束爲簡單的錯字。 – owacoder

+1

初始化一個變量:'int x = 0;'。初始化兩個:'int x = 0; int y = 0;'(better)or'int x = 0,y = 0;'(更容易出錯並且不太明顯)。這顯然是對兩個以上變量的概括。 (這在你應該投資的書的變量介紹中已經介紹過了。) – molbdnilo

回答

3

此行不會做你期望它做的事情:

cin >> number1, number2, number3; 

你可能想從cin讀3個數字,這是做了以下方法:

cin >> number1 >> number2 >> number3; 

在當前形式中,其評估爲

(cin >> number1), number2, number3; 

該表達式的結果是number3,它並未在程序中初始化。 number2是表達式的一部分,也未初始化,所以編譯器也會警告它,儘管該值已被丟棄。

1

逗號操作符分隔在C++表達式並將它們連接成一個更大的表達,所以聲明cin >> number1, number2, number3 將從 cin閱讀表達 number1, number2, number3 相當於(cin >> number1), number2, number3這並沒有太大的意義,也肯定不是你打算什麼去做。

改爲嘗試cin >> number1 >> number2 >> number3

這是C++中那些奇怪的「特徵」之一,如果沒有,那麼這種語言會更好。

+0

它不一定*忽略*其餘部分。事實上,它不會,因爲它會導致錯誤。 'number2'和'number3'將得到評估,並且由於它們未被初始化,所以會出現編譯器錯誤。 – Rakete1111

+0

@ Rakete1111從原文中我不清楚,但你確定這是一個錯誤,而不是一個警告? –

+0

VS2015報告錯誤,我不知道其他編譯器 – Rakete1111

0

如前所述,這應該工作:

#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; 
} 
+0

你應該更清楚要回答什麼或不同時! –