최고의 C #을 연산자 튜토리얼 2024년, 이 튜토리얼에서는 산술 연산자,관계 연산자,논리 연산자,비트 연산자,할당 연산자,기타 연산자,C #의 연산자 우선 순위에,를 배울 수 있습니다.
운영자는 특정 수학이나 논리 연산을 수행하도록 컴파일러에 알려주는 상징이다. 다음과 같이 C #을, 내장 사업자의 재산을 보유하고 있습니다 :
이 튜토리얼은 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자와 다른 연산자의 각을 설명합니다.
다음 표는 C #을 지원 모든 산술 연산자를 보여줍니다.10의 값이 변수 추정되면, 변수 B는,20 :
运算符 | 描述 | 实例 |
---|---|---|
+ | 把两个操作数相加 | A + B 将得到 30 |
- | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
* | 把两个操作数相乘 | A * B 将得到 200 |
/ | 分子除以分母 | B / A 将得到 2 |
% | 取模运算符,整除后的余数 | B % A 将得到 0 |
++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |
-- | 自减运算符,整数值减少 1 | A-- 将得到 9 |
C # 사용 가능한 모든 산술 연산자를 알아 보려면 다음 예를 고려하십시오
시스템을 이용하여; 네임 스페이스 OperatorsAppl { 클래스 프로그램 { 정적 무효 메인 (문자열 []에 인수) { INT의 A = 21; INT B = 10; INT의 C; C = A + B; Console.WriteLine는 ( "1 라인 - C는 {0}", c); C = A - B; Console.WriteLine는 ( "2 선 - C는 {0}", c); C는 A * B에 =; Console.WriteLine는 ( "3 선 - C는 {0}", c); C = A / B; Console.WriteLine는 ( "4 선 - C는 {0}", c); C는 B에 % =; Console.WriteLine는 ( "선 (5) - C는 {0}", c); // ++ 제 증분 동작 할당 ++ C = a로 수행; Console.WriteLine는 ( "6 선 - C는 {0}", c); 22 // 이때 값 = --a C 할당하여 // --a 먼저 자기 감산; Console.WriteLine는 ( "7 선 - C는 {0}", c); Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
1 라인 - (C)의 값은 31 이 선 - (C)의 값은 11 3 라인 - C (210)의 값입니다 4 라인 - (C)의 값이 2이고 라인 (5) - (C)의 값이 1 인 6 선 - (C)의 값은 22 7 선 - (C)의 값은 21
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 1; int b; // a++ 先赋值再进行自增运算 b = a++; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // ++a 先进行自增运算再赋值 a = 1; // 重新初始化 a b = ++a; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // a-- 先赋值再进行自减运算 a = 1; // 重新初始化 a b= a--; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // --a 先进行自减运算再赋值 a = 1; // 重新初始化 a b= --a; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); } } }
위의 프로그램은 출력은 다음과 같습니다
a = 2 b = 1 a = 2 b = 2 a = 0 b = 1 a = 0 b = 0
다음 표는 C #을 지원 모든 관계 연산자를 보여줍니다.10의 값이 변수 추정되면, 변수 B는,20 :
运算符 | 描述 | 实例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 | (A == B) 不为真。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 不为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 不为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |
C #을 사용 가능한 모든 관계 연산자를 알아 보려면 다음 예를 고려하십시오
시스템을 이용하여; 클래스 프로그램 { 정적 무효 메인 (문자열 []에 인수) { INT의 A = 21; INT B = 10; 경우 (a ==의 b) { Console.WriteLine ( "라인 1 - a는 b와 동일"); } 그렇지 않으면 { Console.WriteLine ( "1 호선 - A와 B 같지 않음"); } 경우의 (a <b)는 { Console.WriteLine ( "2 호선 - 미만 B"); } 그렇지 않으면 { Console.WriteLine ( "라인 - 2 이하 나보다"); } 경우의 (a> b)는 { Console.WriteLine ( "선 3 - a가 b보다 크다"); } 그렇지 않으면 { Console.WriteLine ( "3 호선 - 나보다 크지"); } / *는 A의 값 및 B * 변경 / A = 5; B = 20; 경우 (A <= B) { Console.WriteLine ( "4 호선 - 미만 또는 B 같음"); } 경우의 (b> = A) { Console.WriteLine는 ( "선 (5) - (B)이보다 크거나 같을 때"); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
1 호선 - A와 B 동일하지 2 호선 - 나보다 작지 라인 3 - a가 b보다 크다 라인 4 - a는 b보다 작거나 동일 라인 (5) - (B)는 이상일
다음 표는 C #을 지원 모든 논리 연산자를 보여줍니다. 사실 변수부울 값을 가정, 변수 B는,부울 값 false입니다 :
运算符 | 描述 | 实例 |
---|---|---|
&& | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (A && B) 为假。 |
|| | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (A || B) 为真。 |
! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(A && B) 为真。 |
C #을 사용 가능한 모든 논리 연산자를 알아 보려면 다음 예를 고려하십시오
시스템을 이용하여; 네임 스페이스 OperatorsAppl { 클래스 프로그램 { 정적 무효 메인 (문자열 []에 인수) { 부울 A = 진정한; 부울 B = 진정한; 경우 (a &&의 b) { Console.WriteLine ( "선 (1) - 조건은 사실이다"); } 경우 (a ||의 b) { Console.WriteLine ( "라인 2 - 조건은 사실이다"); } / *는 A의 값 및 B * 변경 / A = 거짓; B = 진정한; 경우 (a &&의 b) { Console.WriteLine ( "라인 3 - 조건은 사실이다"); } 그렇지 않으면 { Console.WriteLine ( "라인 3 - 조건은 사실이 아니다"); } 만약 (! (a &&의 b)) { Console.WriteLine ( "선 (4) - 조건은 사실이다"); } Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
1 호선 - 조건이 true 2 호선을입니다 - 조건이 true 라인 3 - 조건이 true - 조건이 true 4 호선 아니다
비트 비트에 작용하는 연산자 및 비트 연산에 의해 비트. &, | 다음과 같이 그리고 ^ 진리표는 다음과 같습니다
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 |
가정의 경우 A = 60, 및 B = 13, 다음과 같이 지금, 바이너리 형태이다 :
A = 0011 1100
B = 0000 1101
-----------------
A & B = 0000 1100
A | B = 0011 1101
0001 ^ B = 0011
~ A = 1100 0011
다음 표는 C #을 지원 비트 연산자를 보여줍니다. 변수A는 60, 그 변수 B(13)의 값으로 가정한다 :
运算符 | 描述 | 实例 |
---|---|---|
& | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 | (A & B) 将得到 12,即为 0000 1100 |
| | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 | (A | B) 将得到 61,即为 0011 1101 |
^ | 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 | (A ^ B) 将得到 49,即为 0011 0001 |
~ | 二进制补码运算符是一元运算符,具有"翻转"位效果。 | (~A ) 将得到 -61,即为 1100 0011,2 的补码形式,带符号的二进制数。 |
<< | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2 将得到 240,即为 1111 0000 |
>> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A >> 2 将得到 15,即为 0000 1111 |
, C #을 배우고 사용할 수있는 모든 비트 연산자를 다음 예를 고려하십시오
시스템을 이용하여; 네임 스페이스 OperatorsAppl { 클래스 프로그램 { 정적 무효 메인 (문자열 []에 인수) { INT A = 60 / * 1100 = 0011 60 * / INT B = 13 / * 1101 = 0000 13 * / INT의 C = O; C = A, B, / * 12 = 0000 1100 * / Console.WriteLine는 ( "1 라인 - C는 {0}", c); C A = | B를 / * 1101 = 0011 61 * / Console.WriteLine는 ( "2 선 - C는 {0}", c); C = A ^ B / * 0001 = 0011 49 * / Console.WriteLine는 ( "3 선 - C는 {0}", c); C = ~ / * - 0011 = 1100 61 * / Console.WriteLine는 ( "4 선 - C는 {0}", c); C는 = A << 2 / * 240 = 1111 0000 * / Console.WriteLine는 ( "선 (5) - C는 {0}", c); C = A >> 2 / * 15 = 0000 1111 * / Console.WriteLine는 ( "6 선 - C는 {0}", c); Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
1 라인 - (C)의 값은 12 이 선 - (C)의 값이 61 인 3 선 - (C)의 값이 49 인 4 라인 - 값 C는 -61 라인 (5) - (C)의 값이 240 인 6 선 - (C)의 값은 15
다음 표는 C #은 할당 연산자를 지원 나열
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | C = A + B 将把 A + B 的值赋给 C |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 | C += A 相当于 C = C + A |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 | C -= A 相当于 C = C - A |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 | C *= A 相当于 C = C * A |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 | C /= A 相当于 C = C / A |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 | C %= A 相当于 C = C % A |
<<= | 左移且赋值运算符 | C <<= 2 等同于 C = C << 2 |
>>= | 右移且赋值运算符 | C >>= 2 等同于 C = C >> 2 |
&= | 按位与且赋值运算符 | C &= 2 等同于 C = C & 2 |
^= | 按位异或且赋值运算符 | C ^= 2 等同于 C = C ^ 2 |
|= | 按位或且赋值运算符 | C |= 2 等同于 C = C | 2 |
사용 가능한 모든 대입 연산자에 C 번호를 알아 보려면 다음 예를 고려하십시오
시스템을 이용하여; 네임 스페이스 OperatorsAppl { 클래스 프로그램 { 정적 무효 메인 (문자열 []에 인수) { INT의 A = 21; INT의 C; C = A; Console.WriteLine ( "1 호선 - = C 값 = {0}", c); C + = A; Console.WriteLine ( "2 호선 - + = C 값 = {0}", c); C - A =; Console.WriteLine ( "3 호선 - - = C 값 = {0}", c); C * = A; Console.WriteLine ( "4 호선 - * = C 값 = {0}", c); C / = A; Console.WriteLine ( "5 호선 - / = C 값 = {0}", c); C = 200; ㄴ % = A; Console.WriteLine ( "라인 - 6 % = C 값 = {0}", c); C << = 2; Console.WriteLine ( "라인 7 - << = C 값 = {0}", c); C >> 2 =; Console.WriteLine는 ( "라인 8 - >> C 값을 = = {0}", c); C & = 2; Console.WriteLine ( "9 호선 - & = C 값 = {0}", c); C ^ = 2; Console.WriteLine ( "10 호선 - ^ = C 값 = {0}", c); C | = 2; Console.WriteLine ( "라인 11 - | = C 값 = {0}", c); Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
1 호선 - = C = 값 (21) 2 호선 - + = C의 값 = (42) 3 선 - - C의 값을 = = 21 4 라인 - C의 * = 값 = 441 5 호선 - / = C = 값 (21) 6 선 - (%) = (c)의 값 = 11 7 선 - << = C의 값 = (44) 8 라인 - 값 >> = C = 11 9 선 - C의 & = 값 = 2 라인 10 - ^ = C = 0 값 라인 11 - | = C 2 = 값
? 다음 표를 sizeof의typeof및포함하여 C # 지원하는 일부 다른 중요한 연산자를보여줍니다.
운영자 기술 예 를 sizeof () 데이터 타입의 크기를 돌려줍니다. 를 sizeof (int)를, 4를 반환합니다. 대한 typeof () 클래스 형을 돌려줍니다. 대한 typeof (위해 StreamReader); 및 주소 변수를 돌려줍니다. & A는, 당신은 변수의 실제 주소를 얻을 것이다. * 포인터 변수입니다. *는, 변수를 가리 킵니다. ? : 조건식 ? 조건이 true, 또는 X 경우 Y, 그렇지 않으면 이다 특정 유형의 객체 여부를 결정합니다. (포드 자동차입니다) 경우 여부 개체 포드 자동차 클래스를 확인 //. 으로 변환이 예외를 throw하지 않습니다 실패하는 경우에도, 캐스트. 개체 OBJ = 새로운 StringReader를 ( "안녕하세요");시스템을 이용하여; 네임 스페이스 OperatorsAppl { 클래스 프로그램 { 정적 무효 메인 (문자열 []에 인수) { / *를 sizeof 연산자 인스턴스 * / Console.WriteLine은 (는 sizeof (int)를 "INT의 크기는 {0}입니다"); Console.WriteLine은 (는 sizeof) (짧은 "짧은 크기는 {0}입니다"); Console.WriteLine ()는 (더블, sizeof 연산자의 "{0}의 크기를 두 배로"); / * 삼항 연산자 * / 인스턴스를 나누기 A, B를 int로; A = 10; B = (A == 1) 20 : 30;? Console.WriteLine ( "B 값은 {0}", B) B = (A == 10) 20 : 30;? Console.WriteLine ( "B 값은 {0}", B) Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
지능 크기는 4 짧은 크기는 2 더블은 8입니다 B 값은 30이다 B 값은 20이다
연산자 우선 순위는 식의 결합 된 용어를 결정한다. 이 방법 식 계산에 영향을 미칩니다. 일부 운영자들은 운영자 높은 우선 순위보다 덧셈과 뺄셈, 곱셈과 나눗셈 연산자 다른 사업자보다 높은 우선 순위를 갖는다.
예를 들어, X = * 연산자는 +보다 더 높은 우선 순위를 가지고 있기 때문에 X는 그래서 먼저 곱하기 3 * 2를 계산하는 대신 20의 13에 할당, 7 + 3 * 2, 다음 7을 추가합니다.
다음 표는 위의 우선 순위가 높은 사업자가 테이블에 표시되는 다음과 같은 우선 순위가 낮은 연산자, 테이블에 표시 갖는 각각의 연산자에 대한 연산자 우선 순위의 순서로 나열됩니다. 식에서, 우선 순위가 높은 우선 오퍼레이터가 계산된다.
类别 | 运算符 | 结合性 |
---|---|---|
后缀 | () [] -> . ++ - - | 从左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 从右到左 |
乘除 | * / % | 从左到右 |
加减 | + - | 从左到右 |
移位 | << >> | 从左到右 |
关系 | < <= > >= | 从左到右 |
相等 | == != | 从左到右 |
位与 AND | & | 从左到右 |
位异或 XOR | ^ | 从左到右 |
位或 OR | | | 从左到右 |
逻辑与 AND | && | 从左到右 |
逻辑或 OR | || | 从左到右 |
条件 | ?: | 从右到左 |
赋值 | = += -= *= /= %=>>= <<= &= ^= |= | 从右到左 |
逗号 | , | 从左到右 |
시스템을 이용하여; 네임 스페이스 OperatorsAppl { 클래스 프로그램 { 정적 무효 메인 (문자열 []에 인수) { INT의 A = 20; INT B = 10; INT의 C = 15; INT의 D = 5; INT 전자; E = (A + B) * C / D; // (30 * 15) / (5) Console.WriteLine ( "값 (A + B) * C / D는 {0}입니다", 전자); 전자 = ((A + B) * C) / D; // (30 * 15) / (5) Console.WriteLine ( "값 ((A + B) * C) / d는 {0}입니다", 전자); E = (a + b) * (C / D) // (30) * (15/5) Console.WriteLine ( "(A + B) * (c / d를) 값은 {0}입니다", 전자); E = A + (ㄴ *의 C) / D; // 20 + (5분의 150) Console.WriteLine는 (전자의 "+ (ㄴ * (c)의 값) / d를 {0}입니다"); Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
값 (A + 나) * C / D가 90 값 ((a는 + B) * C) / d를 90 (A는 B +) * (C / D)의 값이 90 A + (b *의 온도)의 값 / D가 50