看到标题,可能会心生疑惑: 这么基础且重要的操作,不同语言不应该是一致的吗?
并不一定,比如对于右移运算和加法运算,Go就与其他多数语言表现得不一致:
Go:
1 2 3 4 5 6 7
| package main
import "fmt"
func main() { fmt.Println(1+2>>1) }
|

Java:
1 2 3 4 5 6 7 8
| import java.io.*; class test { public static void main (String[] args) throws java.lang.Exception { System.out.println(1+2>>1); } }
|

C/C++:
1 2 3 4 5 6 7 8
| #include <stdio.h>
int main(void) {
int a = 1+2>>1; printf("%d\n",a); return 0; }
|

nodejs:

python:
1 2 3 4 5 6 7
|
import sys if True : aaa=1+2>>1 print(aaa) // 1 print(sys.version) //3.8.6 (default, Sep 24 2020, 21:45:12) [GCC 8.3.0]
|

php:
1 2 3 4 5 6
| <?php $aa=1+2>>1; echo 'hello '.'1+2>>1运算结果为:'.$aa."\n"; echo date('Y-m-d H:i:s',time())."\n"; echo "PHP版本:".phpversion(); ?>
|

↑
BTC Address:3NNxkM6ez7szsUAgTnK2VaF949LoGmXuBs