hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Học C căn bản
Các toán tử và biểu thức trong C

Các toán tử và biểu thức trong C

  • 06-01-2023
  • Toanngo92
  • 0 Comments

Chúng ta hãy lấy ví dụ tương tự mà chúng ta đã giải quyết trong phần trước để cộng hai số và hiển thị tổng của chúng. Mã giả cho cùng được đưa ra trong ví dụ như sau:

BEGIN
INPUT A
INPUT B
C = A+B
DISPLAY C

Trong ví dụ này, giá trị của hai biến a và 2 được chấp nhận. Các giá trị được thêm vào và tổng được lưu trữ trong câu lệnh C = A + B. Trong câu lệnh này, A và B là các biến, gọi là toán hạng và ký hiệu + được gọi là toán tử, A+B được gọi là biểu thức.

Mục lục

  • Biểu thức (Expression)
  • Toán tử
    • Toán tử số học (arimethic operators)
      • Toán tử số học hai ngôi
      • Toán tử số học một ngôi
    • Toán tử gán (assignment operators)
    • Toán tử quan hệ (Relational Operators)
    • Toán tử luận lý/logic (Logical Operators)
    • Toán tử logic nhị phân (Logic Bitwise operators)
  • Biểu thức Mixed Mode & Chuyển đổi kiểu dữ liệu
  • Ép kiểu (Cast)
  • Thứ tự ưu tiên của các toán tử trong biểu thức
    • Thứ tự ưu tiên toán tử số học
    • Thứ tự ưu tiên toán tử so sánh
    • Thứ tự ưu tiên toán tử logic
    • Thứ tự ưu tiên giữa các loại toán tử

Biểu thức (Expression)

Một biểu thức có thể là bất kỳ tổ hợp nào của các toán tử và toán hạng. Toán tử thực hiện các phép toán như cộng, trừ, so sánh, v.v. Toán hạng là các biến hoặc giá trị mà các phép toán được thực hiện trên đó. Ví dụ: C = A + B thì B, C là toán hạng và + là toán tử. Các toán hạng và toán tử kết hợp cùng nhau thành một biểu thức.

Trong quá trình thực hiện chương trình, giá trị của biến (nếu có) được sử dụng cùng với các hằng số có trong biểu thức. Đánh giá diễn ra với sự giúp đỡ của các tooán tử. Do đó, mọi biểu thức C đều có giá trị.

Sau đây là ví dụ về các biểu thức:

2
x
2 + 5
2 + y + 10
2 + 6 * (4-2)
z + 3 * (8-z)

Toán tử

Toán tử là các kí hiệu mà chỉ cho chương trình dịch biết rằng nó cần thực hiện thao tác toán học hay logic nào. Trong ngôn ngữ C, toán tử được chia thành các danh mục sau:

  • Toán tử số học
  • Toán tử quan hệ
  • Toán tử logic
  • Toán tử gán
  • Toán tử nhị phân

Để hiểu rõ hơn, chúng ta sẽ bắt đầu tìm hiểu từng loại toán tử

Toán tử số học (arimethic operators)

Các toán tử số học được sử dụng để thực hiện các phép toán số. Chúng được chia thành hai lớp: toán tử số học một ngôi và nhị phân.

Liệt kê các toán tử số học và mô tả:

Toán tử một ngôiMô tảToán tử hai ngôiMô tả
–Phép trừ một ngôi+Phép cộng
++Tăng (1 đơn vị)–Phép trừ
—Giảm (1 đơn vị)*Phép nhân
%Phép chia lấy dư
/Phép chia
^Phép mũ
Bảng liệt kê toán tử và mô tả

Toán tử số học hai ngôi

Trong C, các toán tử hai ngôi hoạt động giống toán học và cũng tương tự như trong các ngôn ngữ khác. Các toán tử +, –, * và / có thể được áp dụng cho hầu hết mọi kiểu dữ liệu dựng sẵn được C cho phép (int, float, double). Có vài sự khác biệt nhỏ ví dụ:

  • khi phép chia “/” được áp dụng cho một số nguyên hoặc ký tự, các số sau dấu . thập phân còn lại sẽ bị cắt bớt. Ví dụ, 7/2 sẽ bằng 3 trong phép chia số nguyên.
  • Toán tử chia lấy dư (%) đưa ra kết quả là phần dư của phép chia số nguyên. Ví dụ: 5%2 sẽ trả kết quả bằng 1

Chúng ta hãy xem xét một ví dụ cho toán tử lũy thừa: 3^2. Ở đây, 3 là cơ số và 2 là số mũ. Kết quả 9^2 = 81.

Lưu ý: Các ngôn ngữ lập trình cơ bản, hỗ trợ toán tử ^ để thực hiện phép lũy thừa. Tuy nhiên, nhiều compiler C không hỗ trợ ký hiệu ^ cho lũy thừa. Một cách khác để tính lũy thừa trong C là sử dụng hàm pow) được định nghĩa trong. Cú pháp để tính lũy thừa giống như sau:

#include <stdio.h>
int main(){
int x,y,z;
x = 5;
y = 2;
/* the following function will calculate x to the power y */
z = pow (x,y);
printf("%d",z);
return 0;
}
// ket qua tra ra 25

Toán tử số học một ngôi

Các toán tử số học một ngôi là toán tử trừ (-), toán tử tăng 1 đơn vị (++) và toán tử giảm 1 đơn vị (–)

Ví dụ:

#include <stdio.h>
int main(){
	int a = 5 , b = 6, c = 7;
	printf("%d\n",a++); // pre-increment
	printf("%d\n",++a); // post-increment
	printf("%d\n",-b);
	printf("%d\n",a--); // pre-decrement
	printf("%d\n",--a); // post-decrement
// ket qua
// 5
// 7
// -6
// 7
// 5
        return 0;
}

Toán tử gán (assignment operators)

Đây là toán tử phổ biến nhất trong bất kỳ ngôn ngữ nào và được mọi người biết đến. Trong C, toán tử gán có thể được sử dụng với bất kỳ biểu thức C hợp lệ nào. Cú pháp của toán tử gán là:

variable_name = expression;

Ngooài ra, chúng ta có thể sử dụng phép gán Multiple Assignment để gán nhanh:

#include <stdio.h>
int main(){
int a,b,c;
a = b = c = 5;
        return 0;
}

Tuy nhiên nó không thể được thực hiện tại thời điểm khai báo của các biến. Ví dụ:

#include <stdio.h>
int main(){
int a = int b= int c= 0;
// error
}

Toán tử quan hệ (Relational Operators)

Các toán tử quan hệ được sử dụng để kiểm tra mối quan hệ giữa hai biến, hoặc giữa một biến và một hằng số. Ví dụ: kiểm tra số lớn hơn trong hai số a và b được thực hiện bằng dấu lớn hơn (>) giữa hai toán hạng a và b (a > b). Kết quả trả về giá trị true và false (đúng và sai).

Trong C true là bất kỳ giá trị nào khác 0 và false là 0. Biểu thức sử dụng toán tử quan hệ, trả về 0 cho false và 1 cho đúng. Ví dụ, xét biểu thức sau:

a == 14;

Biểu thức này kiểm tra sự bằng nhau, theo nghĩa là nó kiểm tra xem giá trị chứa trong biến a có bằng 14 hay không. Giá trị của biểu thức này trẻ về là 0 (false) nếu a có giá trị khác 14 và 1 (true) nếu nó là 14.

Ví dụ:

#include <stdio.h>
int main(){
	int a = 6,b = 10;
	printf("%d\n",5==6);
	printf("%d\n",a == 6);
	printf("%d\n",b != 6);
	printf("%d\n",a == b);
	// ket qua
	//0
	//1
	//1
	//0
	return 0;
}

Liệt kê các toán tử quan hệ và mô tả:

Toán tửMô tả
>lớn hơn
>=lớn hơn hoặc bằng
<nhỏ hơn
<=nhỏ hơn hoặc bằng
==bằng nhau
!=không bằng
Liệt kê các toán tử quan hệ và mô tả

Toán tử luận lý/logic (Logical Operators)

Các toán tử logic là các ký hiệu được dùng để kết hợp hoặc phủ định các biểu thức có chứa các toán tử quan hệ.

Biểu thức sử dụng toán tử logic trả về 0 cho false và 1 cho true

Liệt kê các toán tử logic và mô tả:

Toán tửMô tả
&&AND (và)
||OR (hoặc)
!NOT (phủ định)
Liệt kê các toán tử logic và mô tả

Ví dụ:

#include <stdio.h>
int main(){
	int a = 6,b = 10;
	printf("%d\n",a== 5 && b == 10);
	printf("%d\n",a== 5 || b == 10);
	printf("%d\n", !(a == 6));
	// ket qua
	//0
	//1
	//0
	return 0;
}

Toán tử logic nhị phân (Logic Bitwise operators)

Xét ví dụ một toán hạng 12 Toán tử bitwise sẽ coi số 12 này là 1100. Toán tử bitwise coi toán hạng là bit thay vì giá trị số. Các giá trị số có thể là bất kỳ cơ số nào: thập phân, bát phân hoặc thập lục phân. Toán tử Bitwise sẽ chuyển đổi toán hạng thành biểu diễn nhị phân của nó và theo đó trả về 1 hoặc 0.

Liệt kê các toán tử bitwise và mô tả:

Toán tửMô tả
Bitwise AND x&yMỗi vị trí bit trả về 1 nếu bit của cả hai toán hạng là 1.
Bitwise OR x|yMỗi vị trí bit trả về 1 nếu bit của một trong hai toán hạng là 1.
Bitwise NOT (~x)Đảo ngược các bit của toán hạng
Bitwise XOR (x^y)Mỗi vị trí bit trả về 1 nếu một trong hai bit của toán hạng là 1 nhưng trả về 0 nếu bit của 2 toán hạng đều là 1
Liệt kê các toán tử bitwise và mô tả

Ví dụ:

Biểu thức 10 & 15 (1010 & 1111) trả về giá trị 1010 có nghĩa là 10.
Biểu thức 10 | 15 (1010 | 1111) trả về giá trị 1111 có nghĩa là 15.
Biểu thức 10 ^ 15 (1010 ^ 1111) trả về giá trị 0101 có nghĩa là 5.
Biểu thức ~10 ngụ ý (~1010 ) trả về giá trị -11.

Biểu thức Mixed Mode & Chuyển đổi kiểu dữ liệu

Biểu thức mixed mode là biểu thức trong đó các toán hạng của toán tử thuộc về các kiểu dữ liệu khác nhau.
Các toán hạng này thường được chuyển đổi thành cùng loại. Tất cả các toán hạng được chuyển đổi thành kiểu dữ liệu của toán hạng lớn nhất. Thường gọi là type conversion. Thứ tự của các loại dữ liệu khác nhau là:

char(1byte) < int(2bytes) < long(4bytes) < float(4bytes) < double(8bytes)

Ép kiểu (Cast)

Thông thường, một cách thực hành tốt là thay đổi tất cả các hằng int thành float nếu biểu thức làm các phép toán số học với số thực; nếu không thì một số biểu thức có thể mất đi giá trị thực của chúng. Ví dụ:

#include <stdio.h>
int main(){
	int a = 2, b = 10;
	printf("%d\n",a/b);
	printf("%f\n",(float)a/b);
	// ket qua
	//0
	//0.200000
	return 0;
}

Cú pháp:

(data_type)expression

Thứ tự ưu tiên của các toán tử trong biểu thức

Thứ tự ưu tiên (precedence) thiết lập tuần tự thực thi của một nhóm toán tử này so với nhóm toán tử khác khi một biểu thức số học đưược tính toán Tóm lại, nó đề cập đến thứ tự mà C đánh giá các toán tử.

Thứ tự ưu tiên toán tử số học

Liệt kê các thứ tự ưu tiên toán tử và mô tả:

Lớp toán tửToán tửChiều đánh giá
Một ngôi– ++ —phải sang trái
Hai ngôi^trái sang phải
Hai ngôi* / %trái sang phải
Hai ngôi+ –trái sang phải
Hai ngôi=phải sang trái
Liệt kê các thứ tự ưu tiên toán tử và mô tả

Thứ tự ưu tiên của các toán tử này có thể được ghi đè bằng cách đặt phần bắt buộc của biểu thức trong dấu ngoặc đơn (). Một biểu thức trong dấu ngoặc đơn luôn được đánh giá đầu tiên. Một bộ dấu ngoặc đơn có thể được đặt trong một dấu ngoặc đơn khác. Điều này được gọi là lồng các dấu ngoặc đơn. Trong trường hợp như vậy, việc đánh giá được thực hiện bằng cách mở rộng các dấu ngoặc đơn trong cùng trước và sau đó làm việc với cặp dấu ngoặc đơn lần lượt ra ngoài.

Nếu có một số bộ dấu ngoặc đơn trong một biểu thức thì việc đánh giá diễn ra từ trái sang phải.

Thứ tự ưu tiên toán tử so sánh

Một số toán tử số học, như chúng ta đã thấy trong phần trước, có một số loại ưu tiên hơn những toán tử khác. Không có ưu tiên như vậy giữa các toán tử so sánh. Do đó, chúng luôn được đánh giá từ trái sang phải.

Thứ tự ưu tiên toán tử logic

Liệt kê các thứ tự ưu tiên toán tử và mô tả:

Thứ tự ưu tiênToán tử
1NOT
2AND
3OR
Liệt kê các thứ tự ưu tiên toán tử và mô tả

Ví dụ, xét biểu thức sau:

(5==6) || (10==10) && !(10==9) && (1==1)
False OR True AND NOT False AND True
False OR True AND TRUE AND True
Fasle OR TRUE AND TRUE
Fasle OR TRUE
TRUE

Thứ tự ưu tiên giữa các loại toán tử

Thứ tự ưu tiênToán tử
1Số học
2So sánh (quan hệ)
3Logic

Bài tập

1. Viết chương trình nhập vào và tính trung bình cộng ba số: 4,5,7, mỗi số và kết quả cần có biến riêng lưu trữ 

2. Viết chương trình khai báo một biến số thực giá trị bất kỳ. Con số này đại diện cho centimet. In ra số feet tương đương với feet và inch

‘Giả sử 2,54 cm trên inch và 12 inch trên foot

Nếu giá trị đầu vào là 333,3, định dạng đầu ra phải là:
333,3 cm là 10,9 feet
393,33 cm là 131,2 inch

3. Viết chương trình tính diện tích và chu vi hình chữ nhật.

4. Viết chương trình tính lương ròng của một nhân viên với các ràng buộc sau:

Lương cơ bản: $12000
DA: 12% Lương cơ bản
Nhân sự: $150
TA:$120
Khác : $450

Trừ thuế:

a) PF 14% lương cơ bản
b) IT: 15% lương cơ bản

Lương thực nhận = Lương cơ bản + DA+ HRA+ TA + Khác — (PF + IT)

6. Viết mã giả (PSUEDO) và lc đồ giải thuật giải quyết bài toán sau:

Yêu cầu nhập liệu điểm SV và hạnh kiểm

Nếu điểm SV >8 và < 10 , hạnh kiểm TOT in xếp hạng học sinh SX

Nếu điểm SV >8 và < 10 , hạnh kiểm KHA in xếp hạng học sinh GIOI

Nếu điểm SV >8 và < 10 , hạnh kiểm TB in xếp hạng học sinh KHA

Nếu điểm SV >6 và <= 8 , hạnh kiểm TOT in xếp hạng học sinh KHA

Nếu điểm SV >6 và <= 8 , hạnh kiểm KHA in xếp hạng học sinh KHA

Nếu điểm SV >6 và <= 8 , hạnh kiểm TB in xếp hạng học sinh TB

Nếu điểm SV > 0 và <= 6 , hạnh kiểm TOT in xếp hạng học sinh TB

Nếu điểm SV > 0 và <= 6 , hạnh kiểm KHA in xếp hạng học sinh TB

Nếu điểm SV > 0 và <= 6 , hạnh kiểm TB in xếp hạng học sinh YEU

Nếu điểm < 0 hoặc > 10, bất kể tình huống hạnh kiểm là gì in ra nhap khong hop le

Bài viết liên quan:

Kiểu dữ liệu Struct và một số thuật toán sắp xếp
Xử lý tệp tin (File Handling)
Hàm trong C (Functions)
Chuỗi trong C (String)
Con trỏ trong C (Pointers)
Mảng trong C – Mảng một chiều và mảng đa chiều
Các lệnh rẽ nhánh vô điều kiện trong C – return, goto, break, continue, hàm exit
Vòng lặp trong C – các cấu trúc vòng lặp for, while, do while
Điều kiện trong C – các cấu trúc điều kiện if/else, switch case
Thao tác Input / Output trong C
Các kiểu dữ liệu cơ bản trong C
Biến và hằng số, định danh trong ngôn ngữ C

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

KHÁI NIỆM QUẢN LÝ DỰ ÁN CÔNG NGHỆ THÔNG TIN (IT PROJECT MANAGEMENT)

Cấu trúc lập trình và Mảng

Bắt đầu với C#

1. GIỚI THIỆU KHÁI NIỆM CHUẨN MỰC – ĐẠO ĐỨC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

2. ÁP DỤNG CÁC CHUẨN MỰC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×