标签: binary-operators

C++二进制运算符优先顺序

以下参数测试的顺序是什么(在C++中)?

if (a || b && c)
{
}
Run Code Online (Sandbox Code Playgroud)

我刚刚在我们的应用程序中看到了这个代码,我讨厌它,我想添加一些括号来澄清顺序.但我不想添加括号,直到我知道我将它们添加到正确的位置.

编辑:接受的答案和跟进

这个链接有更多的信息,但它并不完全清楚它的含义.好像|| 和&&是相同的优先顺序,在这种情况下,它们从左到右进行评估.

http://msdn.microsoft.com/en-us/library/126fe14k.aspx

c++ binary-operators

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

如何在 Julia 中重载/重新定义二元运算符?

我不断失去关于如何重新定义|| (“或”)或&&(“和”)二元运算符的参考。我在某处读到,必须首先做的事情importall Base。然后我尝试了

Base.||( x::MyType, y::MyType ) = dosomething( x, y )
Run Code Online (Sandbox Code Playgroud)

并且

Base.or( x::MyType, y::MyType ) = dosomething( x, y ) 
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用。如果有人可以提供参考解释如何执行此操作的基础知识,我将不胜感激...我无法找到诸如“在 Julia 中重新定义二元运算符”之类的查询...

overloading operator-overloading binary-operators or-operator julia

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

一元操作与任务融合

令人怀疑的结果如下代码:

public static void main (String[] args)
{ 
int i = 2;
i = i+=2 + i++;
System.out.println(i); }
Run Code Online (Sandbox Code Playgroud)

期待8作为输出,因为'i + = 2'应该更新 i,但它不表现如此.

产量:6

我推断短手赋值运算符按预期返回4但不在变量i中更新相同.任何解释将不胜感激.

java binary-operators unary-operator assignment-operator

3
推荐指数
1
解决办法
264
查看次数

C:二元leftrotate

我在C中写了这个小代码:

int leftrotate (int x, int offset)
{
    return ( x << offset ) | ( x >> (32 - offset));
}
Run Code Online (Sandbox Code Playgroud)

我期望二进制leftrotate一个整数,这意味着我期望将所有位从给定的偏移移动到左边,并且如果数字太大则将其缩小.

例如,当我输入:

10100110100110100101000011111101 = 2795131133 = a69a50fd
Run Code Online (Sandbox Code Playgroud)

我期待作为回报:

01101001101001010000111111011010 = 1772425178 = 69a50fda
Run Code Online (Sandbox Code Playgroud)

(请注意,十六进制一个在开始时正处于结束因为我选择在该特定示例中的偏移4)

但相反,我得到了:

11111111111111111111111111111010 = 4294967290 = fffffffa
Run Code Online (Sandbox Code Playgroud)
  • 任何想法可以来自或我做错了什么?
  • 我使用的是正确的int吗?我应该用uint吗?或许char
  • 它取决于我的计算机的体系结构(32位还是64位)?
  • 我想这取决于整数的长度(这就是我使用32位长度数的原因)?

谢谢 !!!

c binary binary-operators

3
推荐指数
1
解决办法
609
查看次数

delphi到C++构建器的转换

我在Delphi中有源代码我按照http://hscripts.com/tutorials/cpp/bitwise-operators.php为按位运算符在C++ Builder中转换它,但结果是不同的

Delphi中的源代码

procedure TForm1.Button1Click(Sender: TObject)
var
    tmp, dynamicINT : integer;
begin
    dynamicINT := 42080;
    tmp := ((dynamicINT shl 1) or (dynamicINT shr 31) and $7FFFFFFF);

    Edit1.Text := IntToHex(tmp, 4);
end;
Run Code Online (Sandbox Code Playgroud)

德尔福结果:148C0正确!

C++ Builder中的源代码

void __fasctall TForm1::Button1Click(TObject *Sender)
{
    int tmp = 0;
    int dynamicINT = 42080;

    tmp = ((dynamicINT << 1) || (dynamicINT >> 31) && 0x7FFFFFFF);
    Edit1->Text = IntToHex(tmp, 4);
}
Run Code Online (Sandbox Code Playgroud)

C++ Builder结果:0001???

转换有什么问题?

我正在使用C++ Builder 6和Delphi 7

delphi c++builder binary-operators boolean-operations

3
推荐指数
1
解决办法
1131
查看次数

Go - 执行无符号移位操作

Go 中是否有执行无符号移位(即无符号右移)操作?Java 中是这样的

0xFF >>> 3
Run Code Online (Sandbox Code Playgroud)

关于此事我唯一能找到的就是这篇文章,但我不确定我必须做什么。

提前致谢。

binary-operators go

3
推荐指数
1
解决办法
2514
查看次数

带有剪切下溢的字符减法

有没有办法计算:

/** clipped(a - b) **/
unsigned char clipped_substract(unsigned char a, unsigned char b)
{
    return a > b ? a - b : 0;
}
Run Code Online (Sandbox Code Playgroud)

使用一些二进制操作而不是测试?

c c++ binary-operators

3
推荐指数
1
解决办法
95
查看次数

我的问题是我们可以避免 if 条件吗?

我有一个代码条件,例如以下

for(int i=0;i<Number;i++)
{     
     int* pIn = pInputArr[i];
     int* pOut = pOutputArr[i];
      
     for(int Input_number =0;Input_number<100;Input_number++)
         {
            Some_fun(pIn,pOut );
            if (Input_number % 2 == 0)
            {
               pIn = pOutputArr[i];
               pOut = pInputArr[i];
            }
            else
           {
               pOut =  pOutputArr[i];
               pIn = pInputArr[i];
           }
      }
 }    
Run Code Online (Sandbox Code Playgroud)

我想用一种更有效的嵌入式编程方式来代替它,因为有人告诉我,嵌入式编程中的分支操作成本很高。有没有更简洁的方法来使用位操作而不使用 if 条件来实现这一点?也不使用任何内置功能,例如swap和其他。

基于奇数和偶数条件,我正在交换作为Some_func. 我在几个帖子中检查了类似的查询,但没有发现它们有用。任何建议将不胜感激。

c++ embedded if-statement binary-operators

3
推荐指数
1
解决办法
154
查看次数

使用streams().reduce 从ArrayList&lt;Integer&gt; 构建一个字符串?

JavaScript 中,我们可以使用 reducer 构建其他类型的字符串(例如 num to string):

const string = [1,2,3,4,5].reduce((acc,e) => acc += e, "") //"12345"
Run Code Online (Sandbox Code Playgroud)

Java 中,从其他类型构建字符串时,这种模式并不容易:

ArrayList<Integer> arrayListOfIntegers = (ArrayList<Integer>) Arrays.asList(1,2,3,4);
String string = arrayListOfIntegers.stream().reduce("", (String acc, Integer e) -> acc += e); // acc += e throws error
Run Code Online (Sandbox Code Playgroud)

错误是:

“错误的返回类型:字符串不能转换为整数”

这种模式在 Java 中是不可能的吗?

javascript java reduce binary-operators java-stream

3
推荐指数
1
解决办法
198
查看次数

理解Haskell中的折叠

据我了解有关Haskell的褶皱,foldl (-) 0 [1..5]给出的结果是-15通过计算0-1-2-3-4-5,并foldr (-) 0 [1..5]给出了结果-5的计算5-4-3-2-1-0.为什么那么这两个foldl (++) "" ["a", "b", "c"]foldr (++) "" ["a", "b", "c"]给出的结果"abc",而结果foldr是不,相反,"cba"

有什么我缺少理解之间的差异foldlfoldr

haskell functional-programming binary-operators fold associativity

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