标签: operator-precedence

'printf'中的后期/预增量

可能的重复:
在一个语句中输出多个post和pre
增量在'for'循环中的后增量和预增量

以下代码段

int i=0;
printf("%d %d",i++,i++);
Run Code Online (Sandbox Code Playgroud)

给出输出

1 0

我可以理解,但以下

int i=0;
printf("%d %d",++i,++i);
Run Code Online (Sandbox Code Playgroud)

给出输出

2 2

有人能解释我第二种行为吗?

c c++ operator-precedence

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

在C中打印布尔结果

我看了


int c;
while(c = getchar( ) != EOF)
{
   putchar(c);
}
Run Code Online (Sandbox Code Playgroud)

将打印值0或1,具体取决于下一个字符是否为EOF.因为!=的优先级高于=.

但是当我在gcc中运行这个程序时,我得到一个看起来像
| 0 0 | 的字符
| 0 1 |

当我按回车键输出.

c boolean operator-precedence

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

C#的运营商的运营顺序

我正在将C++实用程序移植到C#.当我在C++中运行以下语句时,我得到了正确的操作.当我在C#中运行相同的语句时,然而......

omgwtfbbq

有谁知道为什么'开始++'被执行?疯狂的是,如果我在i = 0时运行(i%2)== 0,则立即窗口返回true.

c# c++ operator-precedence

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

c#null string?

我有以下内容:

string Name = name.First + " "  +  name.Last;
Run Code Online (Sandbox Code Playgroud)

Tom Jones很好.

如果name.First可能为null或name.Last可能为null,我有以下内容:

string SpeakerName = name.First ?? string.Empty + " "  +  name.Last ?? string.Empty;
Run Code Online (Sandbox Code Playgroud)

奇怪的是它只会返回Tom.为什么这个以及如何修复它以if null使其默认为空名字符串为姓或名?

c# operator-precedence null-coalescing-operator

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

构造函数中初始化列表的评估顺序是否已修复?

我的印象是以下容易发生泄漏

class Something {
    std::unique_ptr<A> a;
    std::unique_ptr<int> b{new int{3}};
    std::unique_ptr<C> c;
public:
    Something() : a{new A{}}, c{new C{}} {};
};
Run Code Online (Sandbox Code Playgroud)

如果评估顺序如下

  1. new A{}
  2. new int{3}
  3. new C{}
  4. a{}
  5. b{}
  6. c{}

我正在查看新的C++ 17功能(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r3.pdf),该功能修复了之前评估错误的顺序C++的版本,但它似乎只谈论函数参数评估.

我查看了关于评估顺序的cppreference文档(http://en.cppreference.com/w/cpp/language/eval_order),它似乎也没有提到这一点.

以上是否有明确的评估顺序?(现在使用C++ 17或以前版本的C++)

c++ operator-precedence language-lawyer c++17

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

为什么它只收到1个整数?

为什么只接收一个整数?
这是代码:

#include <iostream>

int main () {
    int num1,num2,num3;
    std::cin>>num1,num2,num3;

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

c++ operator-precedence comma-operator

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

评估"某事< - 东西"的陈述

是否something <- stuff总是在Haskell中评估类似的语句,即使something在其余代码中没有调用它?(被something <- stuff称为"行动"? - 我不知道技术措辞).

如果这是真的,我还有另外一个问题.

我有一些代码从这样开始:

computeContour3d voxel voxmax level = do
    voxelmax <- somefunction voxel
    let max' = fromMaybe voxelmax voxmax
Run Code Online (Sandbox Code Playgroud)

也就是说,如果参数voxmax不是Nothing,则voxelmax没有必要,因为max' = fromJust voxmax在这种情况下.因此,如果我的第一个问题的回答是"是",我怎么能避免评估voxelmax何时没有必要?

monads evaluation haskell lazy-evaluation operator-precedence

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

c结构的&(地址)vs - >(成员访问)的优先顺序?

我有一段(遗留)代码,我正在努力理解; 它看起来像这样:

void *a =  (uint32 *)&b->c.d;
Run Code Online (Sandbox Code Playgroud)

我的问题:什么存储在一个?是吗:

  1. 指向d的指针存储到?
  2. 类型转换d(uint32*)的"值"并存储在?
  3. 还要别的吗?

我在C中寻找运算符优先级,我找不到这种优先级的文档.

c struct operator-precedence

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

对C++中运算符优先级的困惑

比如说,在下面的测试表达式中:

int ggg9 = fggg2() + (fggg3() && fggg4() < fggg5() * fggg6());
//                 4          11         6         3
Run Code Online (Sandbox Code Playgroud)

如果我们遵循运算符优先级(在表达式下面的注释行中显示),我会假设首先计算parens中的表达式,然后将结果添加到fggg2().

因此,我假设它将按此顺序解决:

int r1 = fggg5() * fggg6(); //Precedence 3 (inside parens)
int r2 = fggg4() < r1;      //Precedence 6 (inside parens)
int r3 = fggg3() && r2;     //Precedence 11 (inside parens)
int ggg9 = fggg2() + r3;    //Outside of parens, so it's last
Run Code Online (Sandbox Code Playgroud)

但是x86-64 gcc 8.2 解决它是这样的:

在此输入图像描述

(我将它转换回C++)

    int i0;
    int r2 = fggg2();
    int …
Run Code Online (Sandbox Code Playgroud)

c++ gcc operator-precedence visual-studio-2017

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

Postfix对指针的一元增量操作

我刚开始使用CPointers。关于指针的一元增量操作,有一个使我感到困惑的概念。

int num1, *pnum1
num1 = 2;
pnum1 = &num1;
printf("%d \n before: " , *pnum1);
num1 = (*pnum1)++;
printf("%d \n after: " , *pnum1);
return 0;
Run Code Online (Sandbox Code Playgroud)

由于一元增量运算符(++)的优先级高于解引用运算符(*),因此我将* pnum1放在大括号内。我期望看到以下结果:

之后:3

但是它不会增加num1的值。为什么会这样呢?是不是应该增加num1的值?

c pointers operator-precedence

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