标签: operator-precedence

PHP:正则表达式匹配字符串前面没有美元符号

在我的语法高亮显示器中,我使用正则表达式来解析不同的术语.下面是我解析PHP类的方法:

foreach ( PHP::$Classes as $class )
    $code = preg_replace( "/\b{$class}\b/", $this->_getHtmlCode( $class, PHP::$Colors['class'] ), $code );
Run Code Online (Sandbox Code Playgroud)

现在,只需忽略PHP类和_getHtmlCode函数.正则表达式"/\b{$class}\b/"匹配诸如的名称count.如果我创建一个名为的变量$count,那么匹配就好了.

如何查找前面没有的类名$

php regex ignore operator-precedence

0
推荐指数
1
解决办法
1548
查看次数

为什么降低优先级运算符首先执行?

可能重复:
运算符优先级问题

我们知道前缀的优先级大于"LOGICAL AND"(&&),"LOGICAL AND"的优先级大于"LOGICAL OR"(||).

以下程序似乎违反了它:

int main()

{
    int i=-3,j=2,k=0,m;
    m=++i||++j&&++k;
    printf("%d %d %d %d",i,j,k,m);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果优先级++大于&&,||则应首先执行所有前缀.在此之后i=-2,j=3,k=1,然后&&将首先执行.为什么输出显示:-2 2 0 1

该程序的行为在ubuntu v12.04上也是相同的.

c operator-precedence

0
推荐指数
1
解决办法
342
查看次数

Javascript"if"操作顺序

所以假设你有一个非常基本的人物对象,有两个值和一个函数:

function personObject() {
    this.name = 'First Name';
    this.placeInLine = 1;
    this.setPlaceInLine = function(place) {
        this.placeInLine = place;
    }
}
Run Code Online (Sandbox Code Playgroud)

我们设置了一些这样的变量:

var john = new personObject();
var bill = new personObject();
var message = "";
Run Code Online (Sandbox Code Playgroud)

现在看看下面的三个代码片段......

---代码#1 ---

if(john.placeInLine < bill.placeInLine) message = "John is before Bill";
else message = "John is not before Bill";
Run Code Online (Sandbox Code Playgroud)

结果:消息="约翰不在比尔之前"; //因为1不小于1

---代码#2 ---

bill.setPlaceInLine(2); // change Bill's place to 2 (instead of default of 1)
if(john.placeInLine < bill.placeInLine) message = "John is before Bill"; …
Run Code Online (Sandbox Code Playgroud)

javascript operator-precedence conditional-statements

0
推荐指数
1
解决办法
519
查看次数

gcc与字符串类型不一致

我有以下测试程序:

#include <string>
#include <iostream>

int main()
{
    std::string s;
    std::string a = "sd";

    std::cout << a==s ? "y" : "n";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

尝试编译它g++ test.cpp会产生以下神秘错误:

error: no match for 'operator==' (operand types are 'std::basic_ostream<char>' and 'std::string {aka std::basic_string<char>}')
  std::cout << a==s ? "y" : "n";
                ^
Run Code Online (Sandbox Code Playgroud)

它似乎s被正确编译为类型std::string,而a被编译为std::basic_ostream<char>!?救命!!

c++ gcc ternary-operator stdstring operator-precedence

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

如何一次比较多个事物

让我们说a ='hi'

我想知道a是否是以下任何'hi','yes'或'no'我可以运行

a='hi'
a=='hi' or a=='yes' or a=='no'
>>>True
Run Code Online (Sandbox Code Playgroud)

但是,让我们说这是一个很长的可能性列表,所以我只想说

a='hi'
a==('hi' or 'yes')
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到的答案是真的但是当我做这样的事情时:

a==('yes' or 'hi')
>>>False
Run Code Online (Sandbox Code Playgroud)

然后这也很奇怪

a==('yes' and 'hi')
>>>True
Run Code Online (Sandbox Code Playgroud)

但如果我再次切换它们

a==('hi' and 'yes')
>>>False
Run Code Online (Sandbox Code Playgroud)

有人可以解释这里发生的事情

python operator-precedence

0
推荐指数
1
解决办法
92
查看次数

需要帮助理解if语句中的以下布尔表达式

从Kathie Sierra的OCA/OCP Java SE 7程序员I和II学习指南中找到的书:

int x = 2;
int y = 5;
if ((x > 3) && (y < 2) | doStuff()) {
    System.out.println("true");
}
Run Code Online (Sandbox Code Playgroud)

这现在打印......什么都没有!因为前面的代码(少了一组括号)评估就像你说的那样,"如果(x> 3)不是真,并且(y <2)或者doStuff()的结果为真,那么打印true那么,如果(x> 3)不成立,那么在查看表达式的其余部分时没有意义"由于短路&&,表达式被评估为好像周围有括号(y <2)| 做东西().

在我的理解中,运营商&&||具有相同的优先级,并从左至右评估.因此,在这种情况下,(x > 3) && (y < 2)仍应首先评估表达式.请解释.

更新:我的错误.这确实是一个"|" 而不是"||".

java operator-precedence short-circuiting

0
推荐指数
1
解决办法
62
查看次数

' - >'的无效类型参数(有'int')

我编译代码时收到下面报告的错误.你能错误地纠正我吗?

无效的类型参数->(有int)

我的代码如下:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

typedef struct bundles
    {
    char str[12];
    struct bundles *right;
}bundle;

int main() {

    /* Enter your code here. Read input from STDIN. Print output to STDOUT */    
    unsigned long N;
    scanf("%lu", &N);
    bundle *arr_nodes;
    arr_nodes = malloc(sizeof(bundle)*100);
    int i=5;
    for(i=0;i<100;i++)
    {
    scanf("%s", &arr_nodes+i->str);
    printf("%s", arr_nodes+i->str);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在这些方面面临问题:

scanf("%s", &arr_nodes+i->str);
printf("%s", arr_nodes+i->str);
Run Code Online (Sandbox Code Playgroud)

c pointers operator-precedence invalid-argument dereference

0
推荐指数
1
解决办法
3028
查看次数

pow功能的无限循环

我是Haskell的新手,我在这里得到了一个无限循环,但我不知道为什么.

module Main where

pow :: Int -> Int -> Int
pow x 0 = 1
pow x y = x * pow x y-1

main :: IO ()
main = print( pow 2 3 )
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

haskell function operator-precedence

0
推荐指数
1
解决办法
97
查看次数

是否定义了函数参数中的内部执行顺序?

我们假设我们有以下代码片段:

void foo(std::unique_ptr<Data> p1, std::unique_ptr<Data> p2){
    bar(p1);
    bar(p2);
}

int main(){
    foo( std::unique_ptr<Data>{new Data}, std::unique_ptr<Data>{new Data});
}
Run Code Online (Sandbox Code Playgroud)

问题是:运行此代码时是否会释放内存(无论发生什么情况)?

标准说我们不能依赖语句的顺序作为函数参数,但内部函数调用/内存分配等呢?它在这里重要吗?

c++ operator-precedence dynamic-memory-allocation c++11

0
推荐指数
1
解决办法
83
查看次数

C运算符优先级,a ++ && b ++ ||中的逻辑与一元 ++ç

在以下代码中,

int a = 1, b = 2, c = 3, d;
d = a++ && b++ || c++;
printf("%d\n", c);
Run Code Online (Sandbox Code Playgroud)

输出将是3,我得到或评估第一个条件,将其视为1,然后不关心其他条件,但在c中,一元运算符的优先级高于逻辑运算符,就像在数学中一样

2 * 3 + 3 * 4
Run Code Online (Sandbox Code Playgroud)

我们首先评估产品然后求和来评估上述表达式,为什么不做同样的事情呢?首先评估所有一元运算符,然后是逻辑事物?

c operator-precedence

0
推荐指数
1
解决办法
69
查看次数