Dẫn nhập
Ở bài học trước, bạn đã nỗ lực được TOÁN TỬ SỐ HỌC, TOÁN TỬ TĂNG GIẢM VÀ TOÁN TỬ GÁN vào C++.
Bạn đang xem: Các phép toán logic trong c
Hôm nay, mình sẽ khuyên bảo về Toán tử quan hệ, logic, bitwise, misc và độ ưu tiên toán tử trong C++ (Operators).
Nội dung
Để hiểu hiểu bài xích này tốt nhất chúng ta nên có kỹ năng và kiến thức cơ bản về những phần:
Trong bài xích ta sẽ cùng khám phá các vấn đề:
Toán tử quan hệ nam nữ trong C++Toán tử lô ghích trong C++Toán tử bên trên bit trong C++Các toán tử hỗn hợp trong C++Độ ưu tiên toán tử trong C++Toán tử quan hệ tình dục trong C++ (Relational operators)
Toán tử quan liêu hệ dùng để so sánh 2 toán hạng cùng với nhau. Vẫn trả về 2 quý giá là 1 (true) hoặc 0 (false).
Bảng dưới mô tả những toán tử tình dục trong C++, đưa sử x = 6, y = 9
Chú ý: Phân biệt toán tử gán bằng (=) với toán tử so sánh bằng (==).
Ví dụ:
#include using namespace std;int sum(int a, int b)return a + b;int main(){cout > x;cout > y;if (x == y)cout y)cout " = y)cout = " Outputs:
Toán tử tình dục và đối chiếu số chấm động?
Trong lập trình, câu hỏi so sánh trực tiếp 2 số chấm cồn là điều không nên và có thể cho ra những hiệu quả không mong mỏi muốn. Đó là do lỗi làm cho tròn của số chấm động, sự việc này vẫn được phân tích và lý giải trong bài xích SỐ TỰ NHIÊN và SỐ CHẤM ĐỘNG vào C++ (Integer, Floating point).
Ví dụ:
#include #include // for std::setprecision()using namespace std;int main(){doubled1 1.0 ;doubled2 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 ;if (d1 == d2)cout d2)cout d2" Outputs:
Trong lịch trình trên, trong toán học thì 2 biến hóa d1 == d2, cơ mà trong lập trình đổi mới d1 > d2 vì lỗi làm tròn số lốt chấm động.
Tương tự, bạn hãy thử cùng với trường hợp 0.1 + 0.7 == 0.8 ?
Chú ý: Không lúc nào so sánh hai quý hiếm dấu chấm động đều nhau hay không. Số đông luôn luôn luôn có sự khác biệt bé dại giữa nhì số chấm động. Cách thông dụng để đối chiếu 2 số chấm rượu cồn là tính khoảng cách giữa 2 số đó, nếu khoảng cách đó là rất bé dại thì ta mang đến là bởi nhau. Giá trị dùng để so sánh với khoảng cách đó thường được call là epsilon.
Toán tử xúc tích và ngắn gọn trong C++ (Logical operators)
Nếu chỉ áp dụng toán tử tình dục để đối chiếu biểu thức quan hệ tình dục đúng giỏi sai, bạn chỉ rất có thể kiểm tra một đk tại một thời điểm. Dẫu vậy thực tế, tất cả lúc bạn sẽ cần kiểm soát nhiều đk cùng lúc.
Ví dụ: để biến hóa một soái ca thì các bạn phải có không ít điều kiện như cầm, kỳ, thi, họa. Bây giờ không chỉ đơn giản dễ dàng 1 điều kiện nữa.
Toán tử lô ghích (Logical operators) sẽ chất vấn nhiều đk cùng thời gian giúp bạn. Tất cả 3 toán tử xúc tích trong C++
Chú ý: luôn sử dụng dấu ngoặc solo () khi tiến hành với những mệnh đề quan hệ tình dục để bộc lộ rõ ràng chân thành và ý nghĩa dòng lệnh và hạn chế sai sót. Với phương pháp này, bạn thậm chí còn không cần nhớ các về độ ưu tiên toán tử.
Ví dụ:
#include #include // for std::setprecision()using namespace std;int main(){cout > value;if (!value)cout 1) && (value Outputs:
Toán tử bên trên bit trong C++ (Bitwise operators)
Toán tử bên trên bit dùng làm thao tác với các bit trên một biến.
Tại sao cần thao tác trên bit? Trong thừa khứ, bộ nhớ máy tính chưa phát triển, vấn đề về quản ngại lý bộ lưu trữ là rất quan trọng. Vì vậy, bạn lập trình đề xuất tận dụng tối đa những bit trong bộ nhớ.
Ví dụ: các biến được giữ trong bộ nhớ ở một showroom duy nhất, những showroom này được xác minh với 1-1 vị bé dại nhất là byte. Xét kiểu tài liệu bool, nó chỉ nuốm giữ 2 quý giá true (1) hoặc false (0). Hình dáng bool chỉ cần 1 bit để lưu trữ dữ liệu, nhưng nó lại chiếm giữ 1 byte trong bộ nhớ, vậy 7 bit sót lại sẽ là lãng phí. áp dụng toán tử bên trên bit giúp chúng ta cũng có thể chứa 8 đổi thay kiểu bool vào 1 byte duy nhất, và tiết kiệm bộ nhớ đáng kể.
Trong vượt khứ, thực hiện toán tử bên trên bit khôn xiết được ưu chuộng. Ngày nay, bộ nhớ lưu trữ máy tính đã cải cách và phát triển và rẻ hơn, lập trình sẵn viên thường xuyên quan trọng tâm đến tính dễ nắm bắt và dễ nâng cấp của mã nguồn. Bởi vì đó, câu hỏi thao tác bên trên bit không thể được ưu chuộng, ngoại trừ phần đa trường hợp yêu cầu tối ưu về tối đa tốc độ, bộ nhớ lưu trữ (những chương trình làm việc big data, rất nhiều game lớn, thiết kế nhúng …).
Vì những toán tử trên bit ít gặp mặt nên mình chỉ ra mắt qua cho chúng ta tham khảo, bạn cũng có thể tự tham khảo thêm nếu muốn chuyên sâu hơn.
Bảng dưới gồm 6 toán tử thao tác làm việc trên bit
Bảng dưới gồm 5 toán tử gán trên bit
Các toán tử tất cả hổn hợp trong C++ (Misc Operators)
Sizeof operator
Để xác định kích thước của một kiểu dữ liệu trên một laptop cụ thể, C++ cung cấp cho bạn toán tử sizeof. Toán tử sizeof là toán tử một ngôi, nhận vào trong 1 kiểu dữ liệu hoặc một biến, cùng trả về form size (byte) của kiểu tài liệu hoặc vươn lên là đó. Toán tử này sizeof đã được giải thích chi tiết trong bài xích Số tự nhiên và Số chấm rượu cồn trong C++ (Integer, Floating point).
Comma operator
Các biểu thức đặt phương pháp nhau bằng dấu phẩy (,), những biểu thức con lần lượt được tính từ trái
sang phải. Biểu thức mới nhận được là quý giá của biểu thức bên nên cùng.
Ví dụ:
x = (a++, b = b + 2);// tương đương vớia++; b = b + 2; x = b;hoặc
int x = 0;int y = 2;int z = (++x, ++y); // increment x & y// tương tự vớiint x = 0;int y = 2;++x;++y;int z = y;Chú ý: dấu phẩy tất cả ưu tiên thấp nhất trong toàn bộ các toán tử.
Vì vậy, hai chiếc code sau đây sẽ cho tác dụng khác nhau:
z = (a, b); // z = bz = a, b; // z = a, với b bị bỏ quaChú ý: Tránh sử dụng các toán tử vệt phẩy (,), ko kể trường đúng theo dùng trong tầm lặp. Vấn đề về vòng lặp sẽ được hướng dẫn chi tiết trong bài bác VÒNG LẶP FOR vào C++ (For statements).
Conditional operator
Toán tử điều kiện ( ?: ) là toán tử 3 ngôi tuyệt nhất trong C++ (có 3 toán hạng), tương đương với câu đk ( if/else statements ).
Cấu trúc câu đk if/else:
if (condition) // ví như condition là true expression1; // triển khai câu lệnh nàyelse expression2; // ví như condition là false, xúc tiến câu lệnh nàyHoặc :
if (condition) // ví như condition là true x = value1; // x = value 1else x = value2; // ví như condition là false, x = value 2Viết lại bên dưới dạng toán tử điều kiện ( ?: ):
(condition) ? expression1 : expression2;Hoặc:
x = (condition) ? value1 : value2;Ví dụ:
#include using namespace std;int main(){int x 6 , y 9 , max;if (x > y)max = x;elsemax = y;cout y) ? x : y;cout Outputs:
Chú ý: Chỉ sử dụng toán tử đk với đều câu điều kiện đơn giản.
Ví dụ:
#include using namespace std;int main(){int a 3 , b 2 , c 4 , max;// nặng nề hiểu, dễ dàng sai => ko nênmax = a > b ? (a > c ? a : c) : (b > c ? b : c);cout Nênmax = a;if (max Outputs:
Chú ý: Toán tử điều kiện ( ?: ) rất có thể là một biểu thức (expression), trong khi câu đk ( if/else ) chỉ là 1 trong câu lệnh (statements).
Ví dụ:
bool b
Is
Vip = true;// Initializing a const variableconst double d
Price = b
Is
Vip ? 1000 : 500;Trong lấy ví dụ trên, ko thể cần sử dụng câu đk ( if/else ) để thế thế. Bởi vì một hằng số bắt buộc được khởi tạo thành giá trị tại thời điểm khai báo.
Một số toán tử khác
Độ ưu tiên với quy tắc kết hợp toán tử trong C++
Để nhận xét đúng một biểu thức như 6 + 9 * 8, bạn cần hiểu rõ ý nghĩa mỗi toán tử vào biểu thức đó, và thứ tự thực hiện của nó. Thứ tự thực hiện của những toán tử trong một biểu thức điện thoại tư vấn là độ ưu tiên của toán tử (operator precedence).
Khi áp dụng độ ưu tiên toán tử, biểu thức trên sẽ tương tự với 6 + ( 9 * 8 ) = 78. Phép nhân (*) có độ ưu tiên cao hơn phép cùng (+), compiler sẽ tự động hóa hiểu và thực hiện đúng theo độ ưu tiên của từng toán tử.
Khi 2 toán tử bao gồm cùng độ ưu tiên trong 1 biểu thức, các quy tắc kết hợp (associativity rules) sẽ nói đến compiler biết nên tiến hành từ trái sang đề xuất (L->R) giỏi từ phải quý phái trái (R->L).
Ví dụ: bạn gồm biểu thức 6 * 9 / 8. Trong biểu thức này, phép nhân (*) và phân chia (/) cùng độ ưu tiên, tuy nhiên nó bao gồm quy tắc phối hợp từ trái sang buộc phải (L->R). Do vậy nó sẽ tương tự (6 * 9) / 8.
Bảng độ ưu tiên (operator precedence) và quy tắc phối kết hợp (associativity rules) những toán tử trong C++
Có thể bạn sẽ không hiểu phần lớn những toán tử trong bảng trên ở thời khắc này, chúng ta chỉ cần lưu ý đến những toán tử vừa học ở đoạn trên. Rất nhiều toán tử còn lại bạn cũng có thể tự mày mò nếu bạn có nhu cầu đặt biệt nào đó.
Kết luận
Qua bài học này, bạn đã cố được Toán tử quan liêu hệ, logic, bitwise, misc với độ ưu tiên toán tử vào C++ (Operators).
Ở bài bác tiếp theo, các bạn sẽ được học tập về CƠ BẢN VỀ CHUỖI KÝ TỰ trong C++ (String), là tiền đề để chúng ta cũng có thể giải được những bài toán trong lập trình.
Cảm ơn các bạn đã theo dõi bài xích viết. Hãy để lại bình luận hoặc góp ý của mình để phân phát triển bài viết tốt hơn. Đừng quên “Luyện tập – thử thách – không lo ngại khó”.
Tài liệu
Nhằm phục vụ mục đích học hành Offline của cộng đồng, Kteam cung ứng tính năng lưu trữ nội dung bài học Toán tử quan liêu hệ, logic, bitwise, misc cùng độ ưu tiên toán tử trong C++ dưới dạng file PDF trong links bên dưới.
Ngoài ra, chúng ta có thể tìm thấy các tài liệu được góp sức từ cộng đồng ở mục TÀI LIỆU trên tủ sách Howkteam.com
Đừng quên like với share nhằm ủng hộ Kteam và người sáng tác nhé!
Thảo luận
Nếu các bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng rụt rè đặt thắc mắc trong phần BÌNH LUẬN dưới hoặc trong mục HỎI & ĐÁP trên tủ sách Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Toán tử trong C là một trong ký hiệu được thực hiện để thực hiện một phép tính/chức năng nào đó. Ngôn từ lập trình C hỗ trợ các dạng toán tử sau:
Toán tử số học. Toán tử quan hệ. Toán tử logic. Toán tử so sánh bit. Toán tử gán. Toán tử lếu láo hợp. máy tự ưu tiên.1. Toán tử số học tập trong C
Bảng sau đây mô tả các toán tử số học được hỗ trợ bởi ngữ điệu C. Trả sử trở nên A = 10 và biến hóa B = 20:
+ | Thêm hai toán hạng | A + B sẽ cho công dụng là 30 |
- | Trừ quý hiếm toán hạng nhị từ toán hạng đầu | A - B sẽ cho tác dụng là -10 |
* | Nhân hai toán hạng | A * B sẽ cho tác dụng là 200 |
/ | Chia mang phần nguyên nhị toán hạng | B / A đã cho tác dụng là 2 |
% | Chia đem phần dư | B % A sẽ cho kết quả là 0 |
++ | Lượng gia cực hiếm toán hạng thêm một đơn vị | A++ đã cho hiệu quả là 11 |
-- | Lượng giảm ngay trị toán hạng một đối chọi vị | A-- vẫn cho hiệu quả là 9 |
2. Toán tử quan hệ trong C
những toán tử quan hệ nam nữ được sử dụng kiểm tra quan hệ giữa hai toán hạng. Kết quả của một biểu thức có dùng những toán tử dục tình là đa số giá trị Boolean (logic “true” hoặc “false”). Các toán tử quan hệ giới tính được áp dụng trong các cấu tạo điều khiển.
Bảng tiếp sau đây mô tả những toán tử quan hệ nam nữ được cung ứng bởi ngữ điệu C. Giả sử đổi thay A = 10 và biến chuyển B = 20:
== | Kiểm tra nếu 2 toán hạng đều nhau hay không. Nếu bằng thì đk là true. | (A == B) là không đúng. |
!= | Kiểm tra 2 toán hạng có mức giá trị khác nhau hay không. Nếu như không bằng thì đk là true. | (A != B) là true. |
> | Kiểm tra trường hợp toán hạng mặt trái có mức giá trị lớn hơn toán hạng bên đề nghị hay không. Ví như lớn hơn nữa thì điều khiếu nại là true. | (A > B) là không đúng. |
= | Kiểm tra nếu như toán hạng bên trái có giá trị lớn hơn hoặc bởi giá trị của toán hạng bên đề xuất hay không. Nếu chính xác là true. | (A >= B) là ko đúng. |
3. Toán tử súc tích trong C
Bảng tiếp sau đây mô tả các toán tử ngắn gọn xúc tích được cung ứng bởi ngôn từ C. Giả sử trở nên A = true (hoặc 1) và biến B = false (hoặc 0):
&& | Được gọi là toán tử logic AND (và). Trường hợp cả nhị toán tử đều sở hữu giá trị không giống 0 thì đk trở lên true. | (A && B) là false. |
|| | Được điện thoại tư vấn là toán tử ngắn gọn xúc tích OR (hoặc). Nếu một trong các hai toán tử khác 0, thì đk là true. | (A || B) là true. |
! | Được call là toán tử NOT (phủ định). Sử dụng để đảo ngược lại trạng thái lô ghích của toán hạng đó. Nếu đk toán hạng là true thì tủ định nó vẫn là false. | !(A && B) là true. |
4. Toán tử bit trong C
các toán tử dạng bit mang lại phép bọn họ thao tác bên trên từng bit đơn lẻ trong những kiểu dữ liệu nguyên thủy. đưa sử A = 60 (= 0011 1100) với B = 13 (= 0000 1101)
& | Toán tử and (và) nhị phân coppy một bit tới hiệu quả nếu nó lâu dài trong cả nhị toán hạng. | (A & B) sẽ cho hiệu quả là 12, tức là 0000 1100 |
| | Toán tử OR (hoặc) nhị phân coppy một bit tới kết quả nếu nó vĩnh cửu trong một hoặc nhị toán hạng. | (A | B) vẫn cho kết quả là 61, có nghĩa là 0011 1101 |
^ | Toán tử XOR nhị phân xào luộc bit mà nó chỉ lâu dài trong một toán hạng mà không phải cả hai. | (A ^ B) vẫn cho kết quả là 49, có nghĩa là 0011 0001 |
~ | Toán tử hòn đảo bit (đảo bit 1 thành bit 0 cùng ngược lại). | (~A ) đã cho hiệu quả là -61, tức là 1100 0011. |
> | Toán tử dịch phải. Quý hiếm toán hạng trái được di chuyển sang phải bởi số những bit được khẳng định bởi toán hạng mặt phải. | A >> 2 vẫn cho công dụng là 15, có nghĩa là 0000 1111 (dịch sang đề nghị hai bit) |
5. Toán tử gán trong C
Toán tử gán dùng làm gán một giá trị vào trong 1 biến và có thể gán những giá trị cho nhiều thay đổi cùng một lúc.
= | Toán tử gán đối kháng giản. Gán quý hiếm toán hạng bên yêu cầu cho toán hạng trái. | C = A + B đã gán cực hiếm của A + B vào trong C |
+= | Thêm quý hiếm toán hạng cần tới toán hạng trái cùng gán quý giá đó cho toán hạng trái. | C += A tương đương với C = C + A |
-= | Trừ đi quý hiếm toán hạng bắt buộc từ toán hạng trái với gán quý giá này cho toán hạng trái. | C -= A tương đương với C = C - A |
*= | Nhân giá trị toán hạng phải với toán hạng trái với gán giá trị này cho toán hạng trái. | C *= A tương tự với C = C * A |
/= | Chia toán hạng trái cho toán hạng đề nghị và gán quý hiếm này cho toán hạng trái. | C /= A tương đương với C = C / A |
%= | Lấy phần dư của phép phân chia toán hạng trái mang đến toán hạng buộc phải và gán đến toán hạng trái. | C %= A tương đương với C = C % A |
>= | Dịch đề xuất toán hạng trái quý phái số địa điểm là quý hiếm toán hạng phải. | C >>= 2 tương tự với C = C >> 2 |
&= | Phép và bit | C &= 2 tương đương với C = C & 2 |
^= | Phép OR loại trừ bit | C ^= 2 tương tự với C = C ^ 2 |
|= | Phép OR bit. | C |= 2 tương đương với C = C | 2 |
6. Toán tử hỗn hợp trong C
Có một số trong những toán tử lếu hợp đặc biệt là sizeof cùng ? : được cung cấp bởi ngôn từ C.
sizeof() | Trả lại kích cỡ của một biến | sizeof(a), cùng với a là integer, thì sẽ trả lại công dụng là 4. |
& | Trả lại add của một biến. | &a; sẽ cho add thực sự của biến hóa a. |
* | Trỏ cho tới một biến. | *a; đang trỏ tới trở thành a. Xem thêm: Những lời chúc lên đường may mắn, hay và ý nghĩa nhất, thượng lộ bình an tiếng anh |
? : | Biểu thức điều kiện | Nếu đk là true ? thì giá trị X : nếu không thì quý hiếm Y |
7. Sản phẩm tự ưu tiên
sản phẩm tự ưu tiên của các toán tử trong C
sản phẩm tự ưu tiên ra quyết định trật tự thực hiện các toán tử trên các biểu thức. Bảng tiếp sau đây liệt kê trang bị tự triển khai các toán tử vào C.
Postfix | () -> . ++ - - | Trái sang phải |
Unary | + - ! ~ ++ - - (type)* và sizeof | Phải thanh lịch trái |
Tính nhân | * / % | Trái quý phái phải |
Tính cộng | + - | Trái sang phải |
Dịch chuyển | > | Trái quý phái phải |
Quan hệ | >= | Trái sang trọng phải |
Cân bằng | == != | Trái thanh lịch phải |
Phép và bit | & | Trái lịch sự phải |
Phép XOR bit | ^ | Trái quý phái phải |
Phép OR bit | | | Trái thanh lịch phải |
Phép and logic | && | Trái lịch sự phải |
Phép OR logic | || | Trái sang trọng phải |
Điều kiện | ?: | Phải thanh lịch trái |
Gán | = += -= *= /= %=>>= |
chuyển đổi thứ từ ưu tiên của các toán tử vào C
Để chuyển đổi thứ từ ưu tiên bên trên một biểu thức, bạn cũng có thể sử dụng vết ngoặc đối chọi ():
Phần được giới hạn trong ngoặc đối kháng được triển khai trước. nếu như dùng các ngoặc đối kháng lồng nhau thì toán tử phía trong ngoặc đơn phía vào sẽ thực thi trước, tiếp nối đến những vòng phía ngoài. vào phạm vi một cặp ngoặc đối chọi thì quy tắc sản phẩm công nghệ tự ưu tiên vẫn giữ nguyên tác dụng.Ví dụ, x = 10 + 5 * 2; sinh hoạt đây, x được gán cực hiếm 20, chứ không phải 30 cũng chính vì toán tử * bao gồm quyền ưu tiên cao hơn nữa toán tử +, chính vì thế đầu tiên nó tiến hành phép nhân 5 * 2 và tiếp đến thêm với 10.
Để thay đổi thứ từ ưu tiên ta sử dụng dấu (), ví dụ, x = (10 + 5) * 2; ở chỗ này x = 30.
Recent Updates sắp đến Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là mang đến tết 2024?
Linked
List vào java
Array
List vào java
Xử lý duplicate vào SQLPhím tắt hay dùng trong Excel
Bảo mật tập tin Excel
Dịch trang tính vào Excel
In trang tính trong Excel
Hàm VLOOKUP trong Excel
Đối tượng bối cảnh trong Excel
Sử dụng macro trong Excel
Sử dụng Templates trong Excel
Sử dụng chủ thể (theme) trong Excel
Viet
Tuts on facebook
học tập Lập Trình Online Miễn giá tiền - Viet
Tuts.Vn
Danh Sách bài học
học Java | Hibernate | Spring học Excel | Excel VBA học tập Servlet | JSP | Struts2 học C | C++ | C# học Python học SQL
bài Tập Có giải thuật
bài xích tập Java bài xích tập C bài bác tập C++ bài bác tập C# bài bác tập Python ví dụ như Excel VBA
thắc mắc Phỏng Vấn
201 câu hỏi phỏng vấn java 25 thắc mắc phỏng vấn servlet 75 câu hỏi phỏng vấn jsp 52 câu hỏi phỏng vấn Hibernate 70 câu hỏi phỏng vấn Spring 57 câu hỏi phỏng vấn SQL
Tuts.Vn all rights reserved. | liên hệ | chế độ - riêng tư | sitemap.html | sitemap_index.xml