标签: operators

如何理解[],(),复合文字运算符,.和 - >是后缀运算符?

在它自己的定义中,后缀运算符是在其所有操作数之后指定的运算符.

在C11标准中,后缀运算符定义为:

6.5.2邮政运营商

句法

post?x-expression:

    primary-expression
    post?x-expression [ expression ]
    post?x-expression ( argument-expression-listopt )
    post?x-expression . identi?er
    post?x-expression -> identi?er
    post?x-expression ++
    post?x-expression --
    ( type-name ) { initializer-list }
    ( type-name ) { initializer-list , }
Run Code Online (Sandbox Code Playgroud)
  1. 标准两个部分之前和之后的调用.,并->为操作数,这是我用粗体突出表现在以下报价.它是否意味着.并且->实际上是中缀运算符,尽管在标准中被称为后缀运算符?

    6.5.2.3结构和工会成员

    约束

    1 的第一个操作数 .运算符应具有原子,限定或不合格的结构或联合类型,第二个操作数应指定该类型的成员.

    2 - >运算符的第一个操作数应具有类型''指向原子,限定或不合格结构的指针''或''指向原子,合格或不合格的联合'的指针, 第二个操作数应指定一个成员.类型指向.

  2. 对于小节 [],()和复合文字不提字"操作数".所以

c expression operators language-lawyer

-6
推荐指数
1
解决办法
208
查看次数

填写差异C++ ==

我们要表达
if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE) ...

if ( option & SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE )...
Run Code Online (Sandbox Code Playgroud)

为什么相同的值option有不同的结果?

c++ equality operators

-7
推荐指数
1
解决办法
114
查看次数

为什么变量的值会在if语句中发生变化

看下面这个小片段的js:

var a = 1;

if(! (--a)) { // when i say --a i did't mean to say "change the value of a" i just meant to say "without manupulating the actual value of a , just check if --a is falsy"
  console.log('ok');
}

console.log(a); // 0 ... WHY ? i never intended to change the value of a 
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么当我没有明确地设定a --a的值时,是否正在被人类化的价值?在代码中存在的if条件中我真的并不是说实际上减少了a的值,它只是一个if check我教过并且会改变它的值a.

我猜,我显然是错的.我只是想知道,这只是一个javascript的东西,还是所有编程语言共同的?(IE能够在if条件中处理变量的值,实际上你想要做的只是临时管理变量的值而不是改变实际值.)

PS: 对不起,如果这个问题听起来真的很琐碎,但对我来说很重要.

编辑:没有要求解释a - 和--a如何工作,我想知道为什么:

计划一:

var a = 1;

--a;

console.log(a) // my …
Run Code Online (Sandbox Code Playgroud)

javascript operators

-7
推荐指数
1
解决办法
1799
查看次数

C / C ++中的“!<number>”是什么意思

!<number>c中的含义是什么。例如!-2还是!3

cout << !-2;

Output:
0

cout << !3;

Output:
0
Run Code Online (Sandbox Code Playgroud)

c c++ operators logical-operators

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

Java如何100%-40 w?rk?

System.out.println(100% - 40);
Run Code Online (Sandbox Code Playgroud)

请解释编译器解决此问题的步骤。

就像我所了解的那样,%是一个需要两个操作数才能工作的运算符,但是在这种情况下,它如何接受另一个像“-”这样的运算符呢?

java operators modulo unary-operator

-9
推荐指数
1
解决办法
120
查看次数

为什么“ -10&5”的结果等于4?当按位AND应用于负数时会发生什么?

我已经编写并编译了以下代码:

void main()
{ 
    printf("%d", -10 & 5);
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它输出值4。为什么该程序的输出为4?

c bit-manipulation operators bitwise-operators negative-number

-11
推荐指数
1
解决办法
140
查看次数

这个"$ x**= $ n"运算符有什么用?

在Perl我知道,我们可以使用"$x *= $n"用于乘xn.所以我错误地使用"**="和输出似乎是非常高的数字非常小的值"n".那个运营商做什么?

请不要说这只是指数级的.它不是.请使用我显示的语法验证

perl operators

-12
推荐指数
1
解决办法
148
查看次数

什么是^ =运算符?

我刚刚在SO上找到了答案,其中一个代码示例(我认为是java)使用了一个我以前从未见过的运算符:^=.我搜索谷歌和SO并且无法在其他任何地方找到它,当我尝试使用java测试时,eclipse发疯了.也许这只是答案中的一个错字,我不确定.这个运营商是什么?它有名字吗?它的用语是什么?

java operators bitwise-operators

-18
推荐指数
2
解决办法
1418
查看次数

"" 或" - >"C struct accessor

"."之间有什么区别?访问C结构中的数据时," - >"?我几次尝试都找不到任何区别.两者都为我提供了对欲望数据的访问

c struct accessor operators

-28
推荐指数
1
解决办法
435
查看次数

为什么i | = j | = k | =(j + = i) - - (k +++ k) - - (i = + j)== 11?

我在一个我开始研究的项目中遇到了这段代码.最初的开发人员已经不再可用,我无法理解它.

k = (j = (i = 0) + 2) + 1;
return i|= j|= k|= (j+= i) - - (k+++k) - - (i =+j);
Run Code Online (Sandbox Code Playgroud)

它产生的价值11.这是如何运作的?

什么是=+运营商?

什么是+++运营商?

什么是- -运营商?

什么是|=运营商?

java operators operator-precedence

-80
推荐指数
4
解决办法
2万
查看次数

Javascript性能,条件语句与赋值运算符

条件运算符===和赋值运算符=之间的性能是否存在差异?我正在用猫鼬写一些预保存的钩子中间件,我想知道是否有很大的速度差异:

UserSchema.pre('save', function (next) {
    if (!this.isModified()) {
        return next();
    }
    this.crm.isUpToDate = false;
    next();
});
Run Code Online (Sandbox Code Playgroud)

UserSchema.pre('save', function (next) {
    if (!this.isModified()) {
        return next();
    }
    if (this.crm.update === true) {
        this.crm.isUpToDate = false;
    }
    next();
});
Run Code Online (Sandbox Code Playgroud)

编辑:

感谢您的建设性意见.

基本上,它看起来并没有太大的性能差异(如上所述它可以忽略不计).感谢http://jsperf.com/测试速度的酷工具,我以前从未听说过它.

对于那些想知道代码的人,首先我在原帖中犯了一个明显的错误,然后当每个人都试图向我指出我哭了,这可能是每个人都投票的原因.

这是我在做的事情:

我有一个mongoose预保存中间件挂钩(用于mongo数据库),每次保存文档时都会运行挂钩.在保存时,我检查文档是否已更新.如果是我将其设置crmIsUpToDate为false.crmIsUpToDate当cron作业到达时,将设置为true.在cron作业到达文档之前,可以多次运行此挂钩.

我认为这不是问题的必要条件,因为问题在于进行比较===和做作业之间是否存在差异=.我甚至不应该把代码放上去,因为它确实减少了主要问题.

javascript performance operators

-101
推荐指数
2
解决办法
7432
查看次数