2013-05-26 46 views
0

並感謝您閱讀本文。我的編程需要一些幫助。我曾經用turbo pascal進行編譯,現在我正在學習C++。這是問題。
我想用一個輸入和輸出這樣的東西來做一個數學的東西。
輸入(在僞代碼):新的C/C++語言。什麼錯了?

Var a,b:=int; op:=char; 
readln(a); 
readln(b); 
case op of 
"+" : write(a+b); 
"-" : write(a-b); 
">" : if a>b then write("true"); else write("false"); 

我試圖做到這一點在C++這樣的,但它沒有被編譯。我不把這裏包括在內,因爲我不明白爲什麼它變得大膽。我寫了這樣的東西。

void main() 
{ 
    int a,b,c; 
    char op; 
    std::cin>>a>>op>>b; 
    switch (c){ 
    case (std::cin>>op == "+") :{ 
     c=a+b; 
     std::cout<<c<<std::endl; 
          } 
    } 
} 

這是錯誤

1> test03.cpp(10):錯誤C2051:殼體表達不是恆定

1> test03.cpp(14):警告C4060:開關語句包含沒有'案件'或'默認'標籤
任何人都可以幫助我嗎?謝謝。

回答

3

您不會爲c賦值,如果您想在開關塊中使用它,它會包含垃圾。

我想你想寫

switch(op) 

case '+' 
+0

啊,是的,對不起我的壞。 –

1

你是不是太離譜。編譯器告訴你到底是什麼問題。您必須在案例表達式中使用常數。

您還有其他一些問題,並且您沒有錯誤處理。

但是爲了幫助您開始,試試這個...

void main() 
{ 
    int a, b, c; 
    char op; 

    std::cin >> a >> op >> b; 

    switch(op){ 
    case '+': 
     c = a + b; 
     break; 
    } 

    std::cout << c << std::endl; 
}