我对此代码感到惊讶:
if (a =! b) { // let it be on false
...
}
Run Code Online (Sandbox Code Playgroud)
但是a永远不会被一个值赋值.这个运营商是关于什么的?
昨天我在修改其他人编写的PHP代码时偶然发现了这个问题.我很困惑,一个简单的比较(if ($var ==! " "))没有按预期工作.经过一些测试后,我意识到编写该代码的人使用==!而不是!==作为比较运算符.我从来没有见过==!任何语言,所以我想知道这个代码到底是怎么工作的并做了一些测试:
<?php
echo "int\n";
echo "1 !== 0: "; var_dump(1 !== 0);
echo "1 !== 1: "; var_dump(1 !== 1);
echo "1 ==! 0: "; var_dump(1 ==! 0);
echo "1 ==! 1: "; var_dump(1 ==! 1);
echo "bool\n";
echo "true !== false: "; var_dump(true !== false);
echo "true !== true: "; var_dump(true !== true);
echo "true ==! false: "; var_dump(true ==! false);
echo "true ==! true: "; var_dump(true …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
public class Operators {
public static void main(String[] args) {
int i =+ 2;
System.out.println(i);
}
}
Run Code Online (Sandbox Code Playgroud)
执行后,我得到以下输出:2
那么=+运营商在这里做了什么呢?
编辑:
正如一些回答,这是分配+2到i,考虑下面的代码:
public class Operators {
public static void main(String[] args) {
int i =- -2;
System.out.println(i);
}
}
Run Code Online (Sandbox Code Playgroud)
所以在上面的例子中,输出应该是-2.但我得到了2
所以我想,它是-(-2),它给出了2.对吗?
我很好奇一件小事.像这样的代码:
String test = "test";
char[] test2 = {'a', 'i'};
int i=0;
test += test2[i] + "";
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)
正如我们怀疑的那样,输出是"testa",但是当我们将操作数"+ ="更改为"= +"时会发生什么?现在输出是"97"并且它是一个字母的ascii代码,它很简单,但整个字符串测试发生了什么?感谢您的建议.