程序只需要 1 个字母输入并退出,而剩余的代码未执行,为啥?
Posted
技术标签:
【中文标题】程序只需要 1 个字母输入并退出,而剩余的代码未执行,为啥?【英文标题】:Program akes only 1 alphabet input and exits while leaving remaining code unexecuted, why?程序只需要 1 个字母输入并退出,而剩余的代码未执行,为什么? 【发布时间】:2020-07-17 09:59:05 【问题描述】:当用户输入一个字符并按 enter 进行下一个输入时,输出窗口要求按任意键并退出,请帮助我让剩余的代码正常工作,
这里是代码
char r, R;
char c;
int channels;
int resedential()
// float channelscost = costperchannel*channels;
// float Bill = channelscost+processingfee+basiccost;
// cout << "Dear Customer Here is Your Bill" <<" "<<Bill<<endl;
int main()
cout << " Enter Customer Type" << " " << endl;
cin >> c;
if( c == r || R )
cout << " Enter Customer Type" << " " << endl;
cin >> c;
【问题讨论】:
不要放代码的图像。放上实际代码。您有复制和粘贴按钮。 图片不可见。而是粘贴代码。 即使图片可见,也不要发布代码的图片。 @underscore_d ''你希望像r
、R
和channels
这样的单元化变量包含什么?“因为这些是全局变量 -保证它们是零初始化的。
@underscore_d 变量 r
、R
和 channels
未未初始化,但您是正确的,OP 有责任意识到它们 是初始化,以及何时、为什么和如何初始化。
【参考方案1】:
我认识到的一件事是,您的 if 语句并没有像您认为的那样做。现在你没有检查 c 是否等于 R。
固定代码:
if(c == r || c == R)
cout << "Enter Customer Type " << endl;
cin >> c;
还要检查 r 和 R 中是否存在实际值。因此它不会与常量 (char(0))
进行比较——ASCII 码 NUL,这是由于文件范围变量的默认初始化为零。
示例:
char r = 'A';
char R = 'B';
【讨论】:
变量c
和r
确实不包含null,它们包含ASCII NUL,即(char)0
,如果没有显式初始化除此以外。顺便说一句,C++ 中没有 null
,但存在一个符合 C 标准的宏符号 NULL
和一个 C++ 原生常量 nullptr
。
@MathewHD 我试图修复一个表达式,这可能会导致变量和常量混淆。请查看(如果新内容不能反映您的意思,请随时恢复)。以上是关于程序只需要 1 个字母输入并退出,而剩余的代码未执行,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
C# winform 程序中如何限制一个文本框中只输入数字和字母呢?
Python练习题8(替换相同的字符串并输出):输入两个字母串,将两个字母串都包含的字母用'_'替换后,输出两个字母串的剩余部分 (不能为空串,区别大小写,只能包含字母)