代码之家  ›  专栏  ›  技术社区  ›  Arlen Beiler

if语句中的or运算符是什么

c#
  •  31
  • Arlen Beiler  · 技术社区  · 15 年前

    在c中,如何指定或:

    if(this OR that) {do the other thing}
    

    我在帮助中找不到它。

    更新:

    我的代码是:

    if (title == "User greeting" || "User name") {do stuff}
    

    我的错误是:

    错误1运算符“”不能应用于类型为“bool”和“string”的操作数c:\documents and settings\sky view barns\my documents\Visual Studio 2005\projects\fol ministry\fol ministry\downloader.cs 63 21 fol ministry

    11 回复  |  直到 8 年前
        1
  •  67
  •   Andy West    15 年前

    || 是C中的条件运算符还是运算符#

    你可能很难找到它,因为很难找到你不知道名字的东西。下一次,尝试在谷歌上搜索“c”操作符,看看逻辑操作符。

    Here is a list C操作员。

    我的代码是:

    if (title == "User greeting" || "User name") {do stuff};
    

    我的错误是:

    错误1运算符“”不能是 应用于“bool”类型的操作数和 'string'c:\文档和设置\sky 查看barns\my documents\Visual Studio 2005年项目部 部级\下载程序.cs 63 21 fol 部

    您需要这样做:

    if (title == "User greeting" || title == "User name") {do stuff};
    

    或运算符对两边的表达式的计算方式相同。在您的示例中,您正在对表达式进行操作 title == "User greeting" (胸部)和表情 "User name" (字符串)如果不进行强制转换或转换,就无法直接组合这些元素,这就是为什么会出现错误。

    此外,值得注意的是 γ 操作员使用“短路评估”。这意味着如果第一个表达式的计算结果为 true ,不计算第二个表达式,因为它不必是-最终结果将始终是 . 有时您可以在优化期间利用这一点。

    最后一个简短的说明-我经常用这样的嵌套括号编写条件:

    if ((title == "User greeting") || (title == "User name")) {do stuff};
    

    这样我就可以控制优先级,不必担心操作顺序。这里可能有点过分,但当逻辑变得复杂时,它尤其有用。

        2
  •  10
  •   womp    15 年前

    OR运算符是一个双管:

    ||
    

    所以看起来:

    if (this || that) 
    {
      //do the other thing
    }
    

    编辑: 更新的尝试不起作用的原因是逻辑运算符必须分隔有效的C表达式。表达式具有操作数和运算符,并且运算符具有优先顺序。

    在您的情况下, = 首先计算运算符。这意味着你的表达式被评估为 (title == "User greeting") || "User name" . 接下来对进行评估。由于要求每个操作数都是布尔表达式,因此它失败,因为您的操作数是字符串。

    使用两个单独的布尔表达式将确保 || 操作员将正常工作。

    title == "User greeting" || title == "User name"
    
        3
  •  8
  •   Paul Creasey    15 年前

    你需要

    if (title == "User greeting" || title == "User name") {do stuff};
    
        4
  •  7
  •   David Hall    15 年前

    为了完整起见,和&是和&运算符的条件版本。

    ECMA C语言规范的参考是 here .

    根据规范:

    3操作x y对应于 操作x y,除了y是 仅当x为假时计算。

    | 对双方的版本进行评估。

    条件版本短路评估,因此允许以下代码:

    if (x == null || x.Value == 5)
        // Do something 
    

    或者(没有双关语)用你的例子:

    if (title == "User greeting" || title == "User name") 
        // {do stuff} 
    
        5
  •  5
  •   Lachlan Roche    15 年前

    条件或运算符是:

    if (expr1 || expr2) {do stuff}
    
    if (title == "User greeting" || title == "User name") {do stuff}
    

    条件(或)及其组成部分是布尔表达式。

    在这里,msdn按优先顺序列出了c运算符 http://msdn.microsoft.com/en-us/library/6a71f45d.aspx . 和的msdn页 布尔表达式 http://msdn.microsoft.com/en-us/library/dya2szfk.aspx .

    如果你刚刚开始学习编程,你应该从一个介绍性的文本或教程中阅读条件语句。这本书似乎涵盖了大部分基本内容: http://www.functionx.com/csharp/Lesson10.htm .

        6
  •  5
  •   blu    15 年前

    或者是

    和IS&

    更新已更改问题:

    您需要在if语句的每个逻辑部分中指定要比较的内容。

    if (title == "User greeting" || title == "User name") 
    {
        // do stuff
    }
    
        7
  •  3
  •   John Saunders    15 年前

    C# Operators 对于C操作员,包括或 ||

        8
  •  2
  •   Tad Donaghe    15 年前

    这是错误的原因:

    if (title == "User greeting" || "User name") {do stuff};
    

    是因为你说的是

    如果标题等于字符串“用户问候语”

    或者只是“用户名”(如果标题等于字符串“用户名”,则不是)。你的或想要写的部分

    if ("User name")
    

    C不知道该怎么办。它不知道如何从“用户名”中获取布尔值。

        9
  •  1
  •   Sen    15 年前

    希望你现在已经有了一个想法。如果你对它感兴趣,你也可以看看 C规格 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf

        10
  •  0
  •   fastcodejava    15 年前

    格式为if

    if (this OR that) 
    

    this that 是表达式而不是值。 title == "aaaaa" 是有效的表达式。阿尔索 OR 不是C中的有效构造,必须使用 || .

        11
  •  0
  •   Abhishek Jaiswal    8 年前

    或用作“”

     if(expr1 || expr2)
     {
        do something
     }