Latest web development tutorials

言語演算子を行きます

オペレータは、実行中のアプリケーションに数学的または論理演算を実行するために使用されます。

行く演算子は、言語に組み込まれています:

  • 算術演算子
  • 関係演算子
  • 論理演算子
  • ビット演算子
  • 代入演算子
  • その他の演算子

詳細にそれぞれに導入された演算子を見てみましょう。


算術演算子

次の表は、すべての言語は、算術演算子を移動します。 仮定Aが10であると、B 20です。

演算子 説明
+ 追加 + B出力30
- 引き算 - B出力-10
* 掛け * B 200の出力
/ 分割されました B /出力2
残り Bの%のA出力0
++ インクリメント ++出力11
- デクリメント A--出力9

次の例では、様々な算術演算子の使用方法を示します。

package main

import "fmt"

func main() {

   var a int = 21
   var b int = 10
   var c int

   c = a + b
   fmt.Printf("第一行 - c 的值为 %d\n", c )
   c = a - b
   fmt.Printf("第二行 - c 的值为 %d\n", c )
   c = a * b
   fmt.Printf("第三行 - c 的值为 %d\n", c )
   c = a / b
   fmt.Printf("第四行 - c 的值为 %d\n", c )
   c = a % b
   fmt.Printf("第五行 - c 的值为 %d\n", c )
   a++
   fmt.Printf("第六行 - c 的值为 %d\n", a )
   a--
   fmt.Printf("第七行 - c 的值为 %d\n", a )
}

上記の業績の例:

第一行 - c 的值为 31
第二行 - c 的值为 11
第三行 - c 的值为 210
第四行 - c 的值为 2
第五行 - c 的值为 1
第六行 - c 的值为 22
第七行 - c 的值为 21

関係演算子

次の表のGo言語の関係演算子のすべて。 仮定Aが10であると、B 20です。

演算子 説明
== 二つの値がそうでなければFalseの場合はTrueに等しい、等しくリターンです確認してください。 (== B)はFalseです
!= 二つの値が等しくないかどうかをチェックし、そうでなければFalseの場合はTrueと等しくないリターン。 (A!= B)はTrueです
> 左の値が右辺の値よりも大きいかどうかをチェックし、そうでなければFalse Trueを返します。 (A> B)はFalseです
< 左の値が右辺の値よりも小さいチェックし、そうでなければFalse Trueを返します。 (A <B)はTrueです
> = それはそうでなければFalseであれば値が正しい値に左以上であるか否か、それがTrueを返すか確認してください。 (A> = B)はFalseです
<= それはそうでなければFalseであれば値が正しい値に左以下であるかどうかを確認し、それはTrueを返します。 (A <= B)が真であります

次の例では、関係演算子の使用方法を示します。

package main

import "fmt"

func main() {
   var a int = 21
   var b int = 10

   if( a == b ) {
      fmt.Printf("第一行 - a 等于 b\n" )
   } else {
      fmt.Printf("第一行 - a 不等于 b\n" )
   }
   if ( a < b ) {
      fmt.Printf("第二行 - a 小于 b\n" )
   } else {
      fmt.Printf("第二行 - a 不小于 b\n" )
   } 
   
   if ( a > b ) {
      fmt.Printf("第三行 - a 大于 b\n" )
   } else {
      fmt.Printf("第三行 - a 不大于 b\n" )
   }
   /* Lets change value of a and b */
   a = 5
   b = 20
   if ( a <= b ) {
      fmt.Printf("第四行 - a 小于等于  b\n" )
   }
   if ( b >= a ) {
      fmt.Printf("第五行 - b 大于等于 b\n" )
   }
}

上記の業績の例:

第一行 - a 不等于 b
第二行 - a 不小于 b
第三行 - a 大于 b
第四行 - a 小于等于  b
第五行 - b 大于等于 b

論理演算子

次の表は、すべての言語は、論理演算子を移動します。 AがTrueであることを前提とし、BはFalseです。

演算子 説明
&& 論理AND演算子。 オペランドの両側に該当する場合、条件はtrue、そうでない場合はfalseです。 (&& B)はFalseです
|| 論理OR演算子。 両側のオペランドがTrueがある場合、条件はtrue、そうでない場合はfalseです。 (|| B)はTrueです
NOT論理演算子。 条件がTrueの場合、論理的にはそうでない場合はTrue、FalseをNOT条件。 !(&& B)はTrueです

次の例では、論理演算子の使用方法を示しています。

package main

import "fmt"

func main() {
   var a bool = true
   var b bool = false
   if ( a && b ) {
      fmt.Printf("第一行 - 条件为 true\n" )
   }
   if ( a || b ) {
      fmt.Printf("第二行 - 条件为 true\n" )
   }
   /* 修改 a 和 b 的值 */
   a = false
   b = true
   if ( a && b ) {
      fmt.Printf("第三行 - 条件为 true\n" )
   } else {
      fmt.Printf("第三行 - 条件为 false\n" )
   }
   if ( !(a && b) ) {
      fmt.Printf("第四行 - 条件为 true\n" )
   }
}

上記の業績の例:

第二行 - 条件为 true
第三行 - 条件为 false
第四行 - 条件为 true

ビット演算子

メモリビットの整数にビット演算子が動作します。

次の表は、ビット演算子を示しています&、|、および^が計算されます。

P Q P&Q P | Q P ^ qは
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

B = 13; A = 60と仮定し、その進数へ:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

ビット以下の表に示す支持C言語の記号を計算します。 Aが60であることを前提とし、Bは13です。

演算子 説明
ビット単位のAND演算子 "&"二項演算子です。 その機能は、操作と参加の各フェーズに対応する2つの2進数です。 (A&B)結果が12で、バイナリは1100 0000です
| ビット単位のOR演算子は "|"二項演算子です。 その機能は、2つの数の操作に関与する各対応するバイナリ相ですか (A | B)の結果はバイナリは00111101です、61です
^ ビット単位の排他的論理和演算子 "^"二項演算子です。 その機能は、二つの数2の対応するバイナリビット異なると結果が1である各対応するバイナリXORの動作に参加することです。 00110001 49バイナリの(A ^ B)の結果
<< 左シフト演算子は "<<"二項演算子です。 Nビット左シフトは2 ^ nで乗算されます。 番号「<<」、小数点移動の権利、廃棄高いと低い0で指定されたすべてのビット数の左オペランドの左 "<<"各バイナリにその機能。 << 240バイナリのための2の結果は11110000です
>> 右シフト演算子 ">>"二項演算子です。 右nビットは、2 ^ nで分割されています。 その機能は、右側の「>>」、様々なバイナリ「>>」左側のオペランドのいくつかのすべての右側に指定されたビット数です。 A >> 15 0000 1111バイナリシステムのための2の結果

次の例では、論理演算子の使用方法を示しています。

package main

import "fmt"

func main() {

   var a uint = 60	/* 60 = 0011 1100 */  
   var b uint = 13	/* 13 = 0000 1101 */
   var c uint = 0          

   c = a & b       /* 12 = 0000 1100 */ 
   fmt.Printf("第一行 - c 的值为 %d\n", c )

   c = a | b       /* 61 = 0011 1101 */
   fmt.Printf("第二行 - c 的值为 %d\n", c )

   c = a ^ b       /* 49 = 0011 0001 */
   fmt.Printf("第三行 - c 的值为 %d\n", c )

   c = a << 2     /* 240 = 1111 0000 */
   fmt.Printf("第四行 - c 的值为 %d\n", c )

   c = a >> 2     /* 15 = 0000 1111 */
   fmt.Printf("第五行 - c 的值为 %d\n", c )
}

上記の業績の例:

第一行 - c 的值为 12
第二行 - c 的值为 61
第三行 - c 的值为 49
第四行 - c 的值为 240
第五行 - c 的值为 15

代入演算子

次の表は、囲碁の言語代入演算子のすべてが一覧表示されます。

演算子 説明
= 単純な代入演算子は左辺値の値式を代入します C = A + B、A + BはCの式の結果に割り当てられます
+ = 割り当て前に一緒に追加されました C + = Aは、C = C + Aに等しいです。
- = 減算代入した後 C - = AはC = Cに等しいです -
* = その後、割り当てを掛けます C * = Aは、C = C * Aに等しいです。
/ = 割り当て後の課 C / = Aは、C = C / Aに等しいです。
%= 割り当て後の剰余 Cの%= Aは、C = C%Aに等しいです。
<< = 割り当て後に残りました C << = Cに等しい2 = C << 2
>> = 割り当て後に右 C >> = C = C 2と等しい>> 2
&= ビットAND代入した後 C = C&2に等しいC&= 2
^ = ビットXOR割り当てを押した後 C = C ^ 2にC ^ = 2に等しいです
| = 位置または割り当てを押した後、 C | 2 | = 2はC = Cに等しいです。

次の例では、代入演算子の使用状況を示します。

package main

import "fmt"

func main() {
   var a int = 21
   var c int

   c =  a
   fmt.Printf("第 1 行 - =  运算符实例,c 值为 = %d\n", c )

   c +=  a
   fmt.Printf("第 2 行 - += 运算符实例,c 值为 = %d\n", c )

   c -=  a
   fmt.Printf("第 3 行 - -= 运算符实例,c 值为 = %d\n", c )

   c *=  a
   fmt.Printf("第 4 行 - *= 运算符实例,c 值为 = %d\n", c )

   c /=  a
   fmt.Printf("第 5 行 - /= 运算符实例,c 值为 = %d\n", c )

   c  = 200; 

   c <<=  2
   fmt.Printf("第 6行  - <<= 运算符实例,c 值为 = %d\n", c )

   c >>=  2
   fmt.Printf("第 7 行 - >>= 运算符实例,c 值为 = %d\n", c )

   c &=  2
   fmt.Printf("第 8 行 - &= 运算符实例,c 值为 = %d\n", c )

   c ^=  2
   fmt.Printf("第 9 行 - ^= 运算符实例,c 值为 = %d\n", c )

   c |=  2
   fmt.Printf("第 10 行 - |= 运算符实例,c 值为 = %d\n", c )

}

上記の業績の例:

第 1 行 - =  运算符实例,c 值为 = 21
第 2 行 - += 运算符实例,c 值为 = 42
第 3 行 - -= 运算符实例,c 值为 = 21
第 4 行 - *= 运算符实例,c 值为 = 441
第 5 行 - /= 运算符实例,c 值为 = 21
第 6行  - <<= 运算符实例,c 值为 = 800
第 7 行 - >>= 运算符实例,c 值为 = 200
第 8 行 - &= 运算符实例,c 值为 = 0
第 9 行 - ^= 运算符实例,c 值为 = 2
第 10 行 - |= 运算符实例,c 值为 = 2

その他の演算子

次の表は、他の事業者が言語を行く示しています。

演算子 説明
変数のメモリアドレスを返します。 &Aは、変数の実アドレスを与えます。
* ポインタ変数。 * Aは、ポインタ変数であります

次の例は、他の演算子の使用方法を示します。

package main

import "fmt"

func main() {
   var a int = 4
   var b int32
   var c float32
   var ptr *int

   /* 运算符实例 */
   fmt.Printf("第 1 行 - a 变量类型为 = %T\n", a );
   fmt.Printf("第 2 行 - b 变量类型为 = %T\n", b );
   fmt.Printf("第 3 行 - c 变量类型为 = %T\n", c );

   /*  & 和 * 运算符实例 */
   ptr = &a	/* 'ptr' 包含了 'a' 变量的地址 */
   fmt.Printf("a 的值为  %d\n", a);
   fmt.Printf("*ptr 为 %d\n", *ptr);
}

上記の業績の例:

第 1 行 - a 变量类型为 = int
第 2 行 - b 变量类型为 = int32
第 3 行 - c 变量类型为 = float32
a 的值为  4
*ptr 为 4

演算子の優先順位

一部の事業者は、より高い優先度を持っている、バイナリ演算子は左から右への動作方向です。 次の表に、すべての演算子とその優先順位、優先順位を降順で上から下へ代表:

優先順位 演算子
7 ^!
6 * /%^&<< >>&
5 + - | ^
4 ==!= << => =>
3 < -
2 &&
1 ||

もちろん、あなたが一時的に表現の動作の全体的な優先度を改善するために、括弧を使用することができます。

上記の業績の例:

package main

import "fmt"

func main() {
   var a int = 20
   var b int = 10
   var c int = 15
   var d int = 5
   var e int;

   e = (a + b) * c / d;      // ( 30 * 15 ) / 5
   fmt.Printf("(a + b) * c / d 的值为 : %d\n",  e );

   e = ((a + b) * c) / d;    // (30 * 15 ) / 5
   fmt.Printf("((a + b) * c) / d 的值为  : %d\n" ,  e );

   e = (a + b) * (c / d);   // (30) * (15/5)
   fmt.Printf("(a + b) * (c / d) 的值为  : %d\n",  e );

   e = a + (b * c) / d;     //  20 + (150/5)
   fmt.Printf("a + (b * c) / d 的值为  : %d\n" ,  e );  
}

上記の業績の例:

(a + b) * c / d 的值为 : 90
((a + b) * c) / d 的值为  : 90
(a + b) * (c / d) 的值为  : 90
a + (b * c) / d 的值为  : 50