标签: operator-precedence

Java如何使用常规运算符执行操作有什么不同?

我正在研究一个关于pascal三角形的java程序.

所以这就是它的编码方式:

for(int i = 0; i < 5; i++){
    for(int j = 0, x = 1; j <= i; j++){
        System.out.print(x + " ");
        x = x * (i - j) / (j + 1);
    }
    System.out.println();
}
Run Code Online (Sandbox Code Playgroud)

它显示:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

但是当我尝试将代码更改为:

for(int i = 0; i < 5; i++){
    for(int j = 0, x = 1; j <= i; j++){
        System.out.print(x + " ");
        x …
Run Code Online (Sandbox Code Playgroud)

java operators operator-precedence

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

if语句中运算符优先级的说明

示例代码:

#include <iostream>

int main()
{
    if(int a = std::cin.get() && a == 'a')
    {
        std::cout << "True" << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:

当我编译这段代码时,visual studio给了我一个很好的警告:warning C4700: uninitialized local variable 'a' used.所以我明白这a是未初始化的.但是,我想完全理解如何评估表达式.上面的if语句是否等同于if(int a && a == 'a') { a = std::cin.get(); }?有人能解释到底发生了什么?

c++ operator-precedence

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

通过宏观中的参数评估方向

正如我在C中所知,函数评估的实际参数的传递从最右边开始并从定向到左边开始.带参数的宏定义是什么情况?我制作了一个代码,使感觉清晰,但输出混淆了我......这是代码.,

#define parsing(a,b) a*b

int parsefun(int a, int b)
{
    return a*b;    
}

int main()
{
    int i=10;
    printf("%d\n",parsing((i++),i));
    i=10;
    printf("%d\n",parsing(i,(i++)));
    i=10;

    printf("%d\n",parsefun((i++),i));
    i=10;
    printf("%d\n",parsefun(i,(i++)));
    system("PAUSE");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码输出,100 100 100 110

我希望宏的相同输出作为函数.但这里的关键点在哪里?

c macros operator-precedence c-preprocessor

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

C++ if语句中的优先级

可能重复:
短路评估是否保证在C++中与Java一样?
C++如何处理&&?(短路评估)

我有以下结构定义和特定用例:

struct foo
{
   bool boo;
};

int main()
{
  foo* f = 0;
   .
   .
   .
  if ((f) && (f->boo)) // <--- point of contention
   return 0
  else
   return 1;
}
Run Code Online (Sandbox Code Playgroud)

标准是否保证上面if语句中的第一组括号始终在第二个之前进行评估?

如果没有什么是最好的重写上面的代码?

目前我有以下一塌糊涂:

if (f)
{
   if (f->boo)
      return 0;
   else
      return 1;
}
else
   return 1;
Run Code Online (Sandbox Code Playgroud)

c++ standards operator-precedence

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

mysql SELECT超过1个OR

我正在尝试通过执行user1和user2来进行numrows查询以查看用户是否是与其他用户的朋友.

这是我的查询,但这不起作用.

SELECT * FROM friends 
WHERE friend1 = USER_ID
AND friend2 = FRIEND
OR
WHERE friend1 = FRIEND
AND friend2 = USER_ID
Run Code Online (Sandbox Code Playgroud)

所以查询正在检查以两种方式查看它,从前到后,如何实现这一点.

mysql sql select operator-precedence

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

C与Python - 条件语句中的运算符优先级

C如何处理条件语句,如n >= 1 <= 10

我最初认为它将被评估为n >= 1 && 1 <= 10,因为它将在Python中进行评估.因为1 <= 10总是如此,所以第二个部分and是冗余的(布尔值X && True等于布尔值X).

但是,当我运行它时n=0,条件被评估为true.事实上,条件总是似乎评估为真.

这就是我看到的例子:

if (n >= 1 <= 10)
  printf("n is between 1 and 10\n");
Run Code Online (Sandbox Code Playgroud)

c c++ python operator-precedence comparison-operators

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

Ruby"&&"导致Rails ajax调用上的内部服务器错误,而"和"则没有.这两者有什么区别?

我正在构建我的第一个Rails应用程序,我正在使用JQuery来发出ajax POST请求来更新资源.我正在发送_method: "PATCH"并正在执行正确的控制器:

  def update
    @buddyship = Buddyship.find(params[:id])
    if @buddyship.involve? current_user && @buddyship.update(buddyship_params)
      render json: { success: true }
    else
      render json: { success: false }, :status => 500
    end
  end
Run Code Online (Sandbox Code Playgroud)

我首先测试标准用例,其中关系确实涉及当前用户,因此条件的第一部分评估为true.第二个也是,我知道,因为我尝试过

def update
  @buddyship = Buddyship.find(params[:id])
  bool = @buddyship.update(buddyship_params)
  logger.debug "bool: "+bool.to_s
  if @buddyship.involve? current_user && bool
    render json: { success: true }
  else
    render json: { success: false }, :status => 500
  end
end
Run Code Online (Sandbox Code Playgroud)

在我得到的日志中bool: true.此外,记录仍在数据库中更新.不知怎的,我得到内部服务器错误而不是成功.

如果我只是使用and而不是&&,一切都按照我的预期运作.

if …
Run Code Online (Sandbox Code Playgroud)

ruby jquery ruby-on-rails operators operator-precedence

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

后缀前缀++和二元和运算符的优先级

我对C中的postfix和前缀运算符优先级感到困惑,任何帮助和提示都会有所帮助.

我会在这里粘贴我的测试代码:

#include <stdio.h>

int a = 0;

int main(int argc, char *argv[])
{
   if (++a & 0x01) // prefix version
   // if (a++ & 0x01) // postfix version
   {
      printf("++ first\n");
   }
   else
   {
      printf("& first\n");
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我现在可以理解,在postfix版本中,虽然postfix ++有一个更大的优先级,但是a++会返回0到这里&,0x01并且会a在此表达式后增加值.

但我无法理解的是为什么在前缀版本中,为什么++a首先进行评估?运算符优先级表指示prefix ++&具有相同的优先级,此外,它们的关联性为right-to-left.这种方法&不应该先评估吗?

编辑: 我正在使用的图表:C运算符优先表

c operator-precedence prefix-operator postfix-operator

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

Python意外的StopIteration

这是我的代码

class A:
    pass

def f():
    yield A()

def g():
    it = f()
    next(it).a = next(it, None)

g()
Run Code Online (Sandbox Code Playgroud)

产生StopIteration错误,由...引起next(it).a = next(it, None).为什么?

文档说如果提供了默认值,next函数不会提高StopIteration,我希望它从生成器(A实例)获取第一个项目并将a属性设置为None.

python generator operator-precedence next assign

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

使用前缀增量运算符和括号优先级对数学表达式进行澄清

鉴于此代码:

int p,k=8;
p=k*(++k-8);
System.out.println(p);
Run Code Online (Sandbox Code Playgroud)

何时++k被评估k=9然后变得k*(9-8)给予9*1

int p,k=8;
p=(++k-8)*k;
System.out.println(p);
Run Code Online (Sandbox Code Playgroud)

但这给出了9作为输出

java math operator-precedence associativity

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