C++ 语言中 if语句的注意事项

前言

原因在于我刷LeetCode题目时,我使用了多层if来判断。但是出现了一个错误

描述

把问题进行 抽象,看下面代码 ,你觉得会输出什么?

int test(string s)
{
	if (s == "A") cout << "A" << endl;
	if (s == "B") cout << "B" << endl;
	if (s == "C") cout << "C" << endl;
	else cout << "D" << endl;
	return 0;
}
	

void main()
{
	string s = "A";
	test(s);
	getchar();
}

投票在下面

如果你觉得会输出“A” 那你就和我犯了一样的“阅读”错误。
如果你这么写代码,最后输出结果是“A\nD”
因为 “else”会和离他最近的“if”组成一个整体。即前面两个if单独执行,第三个if和“else”单独进行“二选一”的是非判断
所以如果这题改变输入:情况会是这样

输入 A 输出 A \n D
输入 B 输出 B \n D
输入 C 输出 C
输入 E or F or ~~ 输出 D

正确操作

如果我的本意是对输入进行判断,即把多个判定条件作为整体,要用“else if

int test(string s)
{
	if (s == "A") cout << "A" << endl;
	else if (s == "B") cout << "B" << endl;
	else if (s == "C") cout << "C" << endl;
	else cout << "D" << endl;
	return 0;
}
输入 A 输出 A 
输入 B 输出 B 
输入 C 输出 C
输入 E or F or ~~ 输出 D

看起来很简单 但是重复使用if语句真的是个坏习惯,在实际应用中直接把我干懵

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值