相关疑难解决方法(0)

使用比较运算符时检查多个值

我总是认为对于任何比较声明,即X == Y或者X != Y是格式,并且您将语句与&&或一起链接||.

有没有办法写X == (Y || Z)而不是X == Y || X == Z

编辑:既然已经确定这不可能干净利落,那怎么办呢?

c++ operator-overloading logical-operators expression-templates

11
推荐指数
1
解决办法
4896
查看次数

你能在if语句中使用2个或更多OR条件吗?

我在论坛上询问之前试图自己测试一下,但我测试这个的简单代码似乎不起作用.

#include <iostream>
using namespace std;

int main() {
cout << "Enter int: ";
int number;
cin >> number;
if (number==1||2||3) {
    cout << "Your number was 1, 2, or 3." << endl;
}
else if (number==4||5||6) {
    cout << "Your number was 4, 5, or 6." << endl;
}
else {
    cout << "Your number was above 6." << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

它总是返回第一个条件.我的问题是,是否有可能超过2个OR条件?或者我的语法不正确?

c++ conditional-statements

8
推荐指数
1
解决办法
2万
查看次数

用户定义的文字参数中的初始化列表

我不知道是否可能,但我想做的事情

int someval = 1;
if({1,2,3,4}_v.contains(someval ))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将文字定义为:

std::vector<int> operator"" _v ( std::initializer_list<int> t )
{
    return std::vector<int> (t);
}
Run Code Online (Sandbox Code Playgroud)

接受我得到的初始化列表

 error: 'std::vector<int> operator"" _v(std::initializer_list<int> t)' has invalid argument list
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我真正想要的是最终摆脱像这样的东西

if(value == 1 || value ==2 || value == 3 ...
Run Code Online (Sandbox Code Playgroud)

写这样的东西真的很烦人,因为你期望语法

if value in (value1, value2 ...) 
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

c++ c++11

8
推荐指数
3
解决办法
2017
查看次数

C - 检查变量是否为*none*的最简洁方法?

背景:

通常,我们开发人员必须检查单个变量是否是众多选项中的至少一个.例如,

if ( (data == 125) || (data == 500) || (data == 750) )
{
    /* ... do stuff ...*/
}
Run Code Online (Sandbox Code Playgroud)

这里的建议(尽管用C#编写)提供了一个优雅的解决方案来使用这样的switch语句,

switch ( data )
{
    case 125:
    case 500:
    case 750:
        /* ... do stuff ...*/
        break;

    default:
        /* ... do nothing ... */
        break;
}
Run Code Online (Sandbox Code Playgroud)

这适用于"或"条件,但对于否定的"或"条件如下所述是丑陋的,

if ( !( (data == 125) || (data == 500) || (data == 750) ) )
{
    /* ... do stuff ...*/
}
Run Code Online (Sandbox Code Playgroud)

这可以写成

switch ( …
Run Code Online (Sandbox Code Playgroud)

c comparison if-statement

4
推荐指数
1
解决办法
149
查看次数

如何进行while循环但有更多条件C++

cout << "Options:\n1: Change Name\n2: Change Password\n3: Change Address\n4: Withraw\n5: Deposit\nL: Log out\n>";
while (user_input2 != '1' && user_input2 != '2' && user_input2 != '3' && user_input2 != '4' && user_input2 != '5' && user_input2 != 'L')
{
    cout << "Invalid input";
}
Run Code Online (Sandbox Code Playgroud)

那么我该如何缩短 while 条件呢?

我试着做:

cout << "Options:\n1: Change Name\n2: Change Password\n3: Change Address\n4: Withraw\n5: Deposit\nL: Log out\n>";
while (user_input2 != '1','2','3','4','5','L')
{
    cout << "Invalid input";
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

编辑1:“我为我想做的事情添加了更多提示”

c++ while-loop

4
推荐指数
1
解决办法
145
查看次数

可扩展的if语句条件

我在想创建一个更具扩展性的if语句的可能性。如果我们有一个条件,即一个变量可能是要满足if语句的多个不同值之一,则我尝试了以下这些格式:

这是默认答案。

if (variable == 23
    || variable == 52 
    || variable == 58 
    || variable == 62 
    || variable == 93)
{ 
    some function
} 
Run Code Online (Sandbox Code Playgroud)

我以为这是C语言的新手。

if (variable == (23,52,58,62,93) 
{
    some function
}
Run Code Online (Sandbox Code Playgroud)

但是,使用逗号方法会收到警告,

warning: expression result unused [-Wunused-value]
Run Code Online (Sandbox Code Playgroud)

有没有人有可能对一个具有多个可能条件的变量制作if语句,而无需每次都复制和粘贴变量名?

c if-statement

2
推荐指数
1
解决办法
77
查看次数

检查变量是否等于这些值中的任何一个

在 C++ 中,有没有办法查看变量是否等于其中一个值?现在我必须做

if (fExt == "zip" | fExt == "7z" | fExt == "gz" | fExt == "tar")
    {
        //do something
    }
Run Code Online (Sandbox Code Playgroud)

然而,有没有更有效的方法呢?

c++

0
推荐指数
2
解决办法
110
查看次数

我用这个字符串得到了一个无限的 while 循环

所以我在这里得到了这部分代码:

string stringparam;

string stringparam1;

double d;

unsigned x;


cout << "Welcome" << endl;

cout << "Choose one (ASUS, MSI, Gigabyte, ASrock)" << endl;
cin >> stringparam;
while (stringparam != "ASUS" || "MSI" || "Gigabyte" || "ASrock")
{
    cout << "you gave bad input \n" << endl;
    cout << "Choose one (ASUS, MSI, Gigabyte, ASrock)" << endl;
    cin >> stringparam;
}
Run Code Online (Sandbox Code Playgroud)

问题是即使我给他一个正确的答案,比如“华硕”,它仍然给我错误信息:“你的输入错误”我该怎么办?

c++ while-loop

-2
推荐指数
1
解决办法
88
查看次数