草庐IT

if-else-statement

全部标签

c++ - if/else if 总是去 else 语句

我正在尝试创建一个根据用户输入的金额确定佣金的功能。它需要用户输入double并使用它来确定它用于哪个方程。但是我编写的代码总是转到else语句,我不确定我的条件有什么问题。doublecalculate(doubles){doublec;if(s>300,000){c=25,000+(0.15*(s-300,000));couts&&s>100,000){c=5,000+(0.10*(s-100,000));cout 最佳答案 s>300,000是一个逗号表达式,相当于(s>300),000。逗号表达式的值是列表中最后一个的值,此

c++ - if/else if 总是去 else 语句

我正在尝试创建一个根据用户输入的金额确定佣金的功能。它需要用户输入double并使用它来确定它用于哪个方程。但是我编写的代码总是转到else语句,我不确定我的条件有什么问题。doublecalculate(doubles){doublec;if(s>300,000){c=25,000+(0.15*(s-300,000));couts&&s>100,000){c=5,000+(0.10*(s-100,000));cout 最佳答案 s>300,000是一个逗号表达式,相当于(s>300),000。逗号表达式的值是列表中最后一个的值,此

c# - 一个 'else' 用于嵌套的 'if' 语句

我有一个问题可以简化为:parameters:a,bif(a>5){Print("Verywell,a>5");if(b>7)Print("Evenbetter,b>7");else{Print("Idon'tlikeyourvariables");}}else{Print("Idon'tlikeyourvariables");}我只想使用一个else而不是两个,因为它们是相同的代码。我想到的是创建一个额外的方法,它将返回组合的true`false`,但这是一个严重的矫枉过正。另一个选项是goto,但这会降低代码的可读性和不安全性。有什么方法可以做到,避免多次检查相同的条件并使其尽可能

c# - 一个 'else' 用于嵌套的 'if' 语句

我有一个问题可以简化为:parameters:a,bif(a>5){Print("Verywell,a>5");if(b>7)Print("Evenbetter,b>7");else{Print("Idon'tlikeyourvariables");}}else{Print("Idon'tlikeyourvariables");}我只想使用一个else而不是两个,因为它们是相同的代码。我想到的是创建一个额外的方法,它将返回组合的true`false`,但这是一个严重的矫枉过正。另一个选项是goto,但这会降低代码的可读性和不安全性。有什么方法可以做到,避免多次检查相同的条件并使其尽可能

c++ - 为什么 std::remove_copy_if() 不实际删除?

这可能是STL中命名最差的函数吗?(反问)std::remove_copy_if()实际上似乎没有进行任何删除。据我所知,它的行为更像是copy_if_not。否定有点令人困惑,但可以使用std::not1()解决,但是我可能会误解一些东西,因为我无法理解这个函数与删除有什么关系-我错过了什么吗?如果没有,是否有STL算法用于有条件地从容器中移除(移动?)元素并将它们放入另一个容器中?编辑以添加示例,以免读者感到困惑。以下程序似乎未触及输入范围(V1):#include#include#include#includeusingstd::cout;usingstd::endl;intma

c++ - 为什么 std::remove_copy_if() 不实际删除?

这可能是STL中命名最差的函数吗?(反问)std::remove_copy_if()实际上似乎没有进行任何删除。据我所知,它的行为更像是copy_if_not。否定有点令人困惑,但可以使用std::not1()解决,但是我可能会误解一些东西,因为我无法理解这个函数与删除有什么关系-我错过了什么吗?如果没有,是否有STL算法用于有条件地从容器中移除(移动?)元素并将它们放入另一个容器中?编辑以添加示例,以免读者感到困惑。以下程序似乎未触及输入范围(V1):#include#include#include#includeusingstd::cout;usingstd::endl;intma

c++ - C++17 中的 "If constexpr"在非模板函数中不起作用

我尝试使用C++17标准。我尝试使用C++17ifconstexpr的特性之一。我有一个问题......请看下面的代码。这编译没有错误。在下面的代码中,我尝试使用ifconstexpr来检查它是否是一个指针。#include#includetemplatevoidprint(Tvalue){ifconstexpr(std::is_pointer_v)std::cout但是当我重写上面的代码时,如下图,其中ifconstexpr在main函数中:#include#includeintmain(){autovalue=100;ifconstexpr(std::is_pointer_v)st

c++ - C++17 中的 "If constexpr"在非模板函数中不起作用

我尝试使用C++17标准。我尝试使用C++17ifconstexpr的特性之一。我有一个问题......请看下面的代码。这编译没有错误。在下面的代码中,我尝试使用ifconstexpr来检查它是否是一个指针。#include#includetemplatevoidprint(Tvalue){ifconstexpr(std::is_pointer_v)std::cout但是当我重写上面的代码时,如下图,其中ifconstexpr在main函数中:#include#includeintmain(){autovalue=100;ifconstexpr(std::is_pointer_v)st

c++ - 常见问题解答 : Why does dynamic_cast only work if a class has at least 1 virtual method?

这在C++中无法编译:classA{};classB:publicA{};...A*a=newB();B*b=dynamic_cast(a); 最佳答案 因为dynamic_cast只能向下转换多态类型,所以标准这么说。您可以通过向基类添加virtual析构函数来使您的类具有多态性。事实上,你可能应该无论如何(见脚注)。否则,如果您尝试通过A指针删除B对象,您将调用UndefinedBehavior.classA{public:virtual~A(){};};瞧!脚注关于在多态类型中需要虚拟析构函数的“规则”有一些异常(except

c++ - 常见问题解答 : Why does dynamic_cast only work if a class has at least 1 virtual method?

这在C++中无法编译:classA{};classB:publicA{};...A*a=newB();B*b=dynamic_cast(a); 最佳答案 因为dynamic_cast只能向下转换多态类型,所以标准这么说。您可以通过向基类添加virtual析构函数来使您的类具有多态性。事实上,你可能应该无论如何(见脚注)。否则,如果您尝试通过A指针删除B对象,您将调用UndefinedBehavior.classA{public:virtual~A(){};};瞧!脚注关于在多态类型中需要虚拟析构函数的“规则”有一些异常(except