Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么常量字符会打断循环和开关语句_C++_Char_Switch Statement_Constants - Fatal编程技术网

C++ 为什么常量字符会打断循环和开关语句

C++ 为什么常量字符会打断循环和开关语句,c++,char,switch-statement,constants,C++,Char,Switch Statement,Constants,我正在使用switch语句制作一个简单的货币转换程序,如下所示: #include "library/std_lib_facilities.h" int main() {//This program converts yen, euros, yuan, kroner and pounds to dollars double amount = 0; char currency = ' '; //one dollar equivalent of each currency const doub

我正在使用switch语句制作一个简单的货币转换程序,如下所示:

#include "library/std_lib_facilities.h"

int main()
{//This program converts yen, euros, yuan, kroner and pounds to dollars
double amount = 0; 
char currency = ' ';

//one dollar equivalent of each currency
const double yen_to_dollar = 113.67;
const double pounds_to_dollar = 0.85; 
const double euros_to_dollar = 0.95;
const double yuan_to_dollar = 6.87;
const double kroner_to_dollar = 7.04; 

//case labels corresponding to currency
const char y = 'y', p = 'p', e = 'e', u = 'u', k = 'k';

cout << "Please type the amount you want to convert, followed by the currency(y,e,p,u,k) u is for yuan: "; 

while(cin >> amount >> currency ) {
    switch(currency) {
        case y:
            cout << amount << " yen == " << amount / yen_to_dollar << " dollars." << '\n';
            break; 

        case p: 
            cout << amount << " pounds == " << amount / pounds_to_dollar << " dollars." <<'\n';
            break; 

        case e: 
            cout << amount << " euros == " << amount / euros_to_dollar << " dollars." << '\n';
            break; 

        case u: 
            cout << amount << " yuan == " << amount / yuan_to_dollar << " dollars." << '\n';
            break; 

        case k: 
            cout << amount << " kroner == " << amount / kroner_to_dollar << " dollars." << '\n';
            break; 

        default: 
            cout << "Please try supported currencies" << '\n';
            break;  
    }   
}

  return 0;
}
#包括“library/std_lib_facilities.h”
int main()
{//这个程序将日元、欧元、人民币、克朗和英镑转换成美元
双倍金额=0;
字符货币=“”;
//每种货币一美元等值
恒生双日元兑美元=113.67;
常数双英镑对美元=0.85;
康斯特双倍欧元兑美元=0.95;
康斯特双元兑美元=6.87;
常数双倍克朗兑美元=7.04;
//对应于货币的大小写标签
常量字符y='y',p='p',e='e',u='u',k='k';
现金>金额>>货币){
交换机(货币){
案例y:


CUT< P>这可能不是,但是输入的“23.4e”值被解释为指数吗?这将是我的想法。你可以考虑解析它,将字符串/ char部分首先移到变量的那个部分。

< P>这可能不是,而是输入的“23.4e”。值被解释为一个指数?这将是我的想法。你可以考虑把它删除字符串/ char部分第一部分到你的变量中。

没有<代码>情况:E<代码>代码,不会编译,因为你仍然有<代码>:S/<代码>但不是<代码> S/<代码>,只有<代码> e <代码>。请确定COD。e you show复制了您描述的行为。这是一个错误。我用案例s测试了它,它成功了。当我问这个问题时,我忘了回到案例e。现在我编辑了案例e。它仍然打破了循环,切换语句我认为这就是问题所在。
24y
24y
有效。但是
1e
不会工作,但
1e
工作。似乎编译器解释
1e
的方式不同于它解释
1y
的方式?@onomosetu
1e
被解析为一个数字,因为
e
是一个指数。对于
1y
,只有
1
被解析为一个数字,
y
被解析为
char>case:e
该代码无法编译,因为您仍然定义了
case:s
,但未定义
s
,仅定义了
e
。请确保您显示的代码再现了您描述的行为。这是一个错误。我使用case s对其进行了测试,结果有效。当我问这个问题时,我忘了返回到case。现在已编辑到case。它仍然打破循环并切换语句。我认为这就是问题所在。
24y
24y
有效。但是
1e
无效,但
1e
有效。编译器对
1e
的解释似乎与对
1y
的解释不同。@onomostu
1e
被解析为数字,因为se
e
是一个指数。对于
1y
,只有
1
被解析为一个数字,
y
被解析为
char
。谢谢。这就是问题所在。我认为编译器将
1e
作为指数来读取,而不是它如何读取
1y
。当我使用
1e
进行测试时,它会输出正确的结果。请问为什么会这样接受
1y
1y
输入,即使前者没有空格?每个格式化的输入操作都跳过任何前导空格。数字可以有
e
字符,如
1.535625e+009
等,它表示指数,因此可以生成一个“数字”从一个字符串中包含一个。看看解析和C++来理解这个。有很多信息。谢谢。这是问题。我认为编译器读取代码< 1E < /代码>作为一个指数,而不是它如何读取代码> 1y<代码>。当我用<代码> 1 E<代码>测试时,它输出正确的结果。我能问为什么它同时接受代码< 1y>代码>d
1 y
输入,即使前者没有空格?每个格式化的输入操作都跳过任何前导空格。数字可以有
e
字符,如
1.535625e+009
等,它表示指数,因此可以生成“数字”从一个包含一个字符串。看解析和C++理解这个-有很多关于THT的信息。