Bài toán về tiính sai số trong dev c năm 2024

Trong toán học, một toán tử (tiếng Anh operator, phân biệt với operation - phép toán) là một hàm, thông thường có một vai trò quan trọng trong một lĩnh vực nào đấy. Chẳng hạn trong đại số tuyến tính có “toán tử tuyến tính” (linear operator). Trong giải tích có “toán tử vi phân” (differential operator)… Thông thường, một “toán tử” là một hàm tác động lên các hàm khác; hoặc nó có thể là tổng quát hóa của một hàm, như trong đại số tuyến tính.

Các kiểu toán tử trong C:

  • 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ử hỗn hợp

Toán tử số học

Giả sử khai báo: int A=5, B=6; float C=1.2;

Toán tửMiêu tảVí dụ+`Cộng 2 toán hạngA + B sẽ cho kết quả là 11-Trừ 2 toán hạngA - B sẽ cho kết quả là -1*Nhân 2 toán hạngA * B sẽ cho kết quả là 30/Chia 2 toán hạngB / A sẽ cho kết quả là 0 (2 toán hạng đều là số nguyên thì kết quả là phần nguyên của thương) A / C sẽ cho kết quả là 4.166667 (1 trong 2 toán hạng là số thực dấu phẩy động thì thương là số thực dấu phẩy động)%`Chia lấy phần dưB % A sẽ cho kết quả là 1

Toán tử so sánh(quan hệ): Trả về giá trị là true (đúng) hoặc false (sai)

int A=5, B=6;

  • `

include

int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }

0 (nhỏ hơn)  

include

int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }

1 -> true
  • `
# include int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }
2 (nhỏ hơn hoặc bằng)

# include   
int main(void)  
{  
  int a = 5, c;  
  float b = 6;  
  c = a % (int)b;  
  printf("%d", c);  
  return 0;  
}  
3 -> true

  • `

include

int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }

4 (lớn hơn)  

include

int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }

5 -> false
  • `
# include int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }
6 (lớn hơn hoặc bằng)

# include   
int main(void)  
{  
  int a = 5, c;  
  float b = 6;  
  c = a % (int)b;  
  printf("%d", c);  
  return 0;  
}  
7 -> false

  • `

include

int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }

8 (bằng)  

include

int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }

9 -> false
  • `
# include int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }
0 (khác)

# include   
int main(void)  
{  
  int a = 5, c;  
  float b = 6;  
  c = a % (int)b;  
  printf("%d", c);  
  return 0;  
}  
1 -> true

Toán tử logic: Trả về giá trị là true (đúng) hoặc false (sai)

Trong ngôn ngữ C, 2 trạng thái true(đúng) và false(sai) được biểu diễn bởi các số nguyên int:

  • Số 0 biểu diễn cho trạng thái false (sai).
  • Tất cả các số nguyên khác 0 biểu diễn cho trạng thái true (đúng).

Các toán tử logic:

  • `

include

int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }

2 (and) trả về true khi cả 2 toán hạng đều đúng. Ngược lại trả về false.  
  • # include int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; } 3 -> true
  • # include int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; } 4 -> false
  • # include int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; } 5 -> false
    • `
# include int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }
6 (or) trả về true khi ít nhất một trong 2 toán hạng đúng. Ngược lại trả về false.

  • include

    int main(void) {

     int a = 5, c;  
     float b = 6;  
     c = a % (int)b;  
     printf("%d", c);  
     return 0;  
    
    }

    3 -> true
  • include

    int main(void) {

     int a = 5, c;  
     float b = 6;  
     c = a % (int)b;  
     printf("%d", c);  
     return 0;  
    
    }

    4 -> true
  • include

    int main(void) {

     int a = 5, c;  
     float b = 6;  
     c = a % (int)b;  
     printf("%d", c);  
     return 0;  
    
    }

    5 -> false

    • `int A=5, B=6; float C=1.2;`0 (not) trả về true khi toán hạng (đằng sau dấu `int A=5, B=6; float C=1.2;`0 sai). Ngược lại trả về false.
  • `int A=5, B=6; float C=1.2;`2 -> true
  • `int A=5, B=6; float C=1.2;`3 -> false

Toán tử thao tác trên bit

  • `int A=5, B=6; float C=1.2;`4 (and bit)
  • `int A=5, B=6; float C=1.2;`5 (or bit)
  • `int A=5, B=6; float C=1.2;`6 (phủ định)
  • `int A=5, B=6; float C=1.2;`7 (dịch bit sang phải)
  • `int A=5, B=6; float C=1.2;`8 (dịch bit sang trái)

Toán tử gán

Sử dụng dấu `int A=5, B=6; float C=1.2;`9 cho việc gán giá trị vào biến.

Ví dụ:

int a,b,c;
int main(void)
{
  a = 5; // Gán cho a giá trị là 5
  c = b = a; // Gán cho b và c giá trị bằng giá trị của a
  return 0;
}

Các toán tử gán mở rộng:

Toán tửVí dụTương đương với`+0+1+2+3+4+5+6+7+8+9-0-1-2-3-4-5-6-7-8-9*0*1*2*3*4*5*6*7*8*`9

Toán tử tăng giảm

  • `/`0 là toán tử tăng
    • /`1 tương đương với /`2
  • `/`3 là toán tử giảm
    • /`4 tương đương với /`5
  • Có 2 cách viết /`1 và /`7 nhưng ý nghĩa của chúng khác nhau:
    • `/`1 thì i được tăng trước sau đó sẽ lấy kết quả để thực hiện biểu thức
    • `/`7 thì i được đưa vào thực hiện biểu thức trước sau đó mới tăng i lên.

Một số toán tử khác

Toán tửMiêu tảVí dụ%`0Trả lại kích cỡ của một biến%1, với a là integer, thì sẽ trả lại kết quả là 4.`int A=5, B=6; float C=1.2;`4Trả lại địa chỉ của một biến.%3 sẽ cho địa chỉ thực sự của biến a.*Trỏ tới một biến.%5 sẽ trỏ tới biến a.%6Biểu thức điều kiệnNếu điều kiện đúng ? thì trả về giá trị X : Nếu không thì trả về giá trị Y%7Ước lượng giá trị toán hạng 1, ước lượng giá trị toán hạng 2 và trả về giá trị toán hạng 2 là giá trị cuối cùng%`8 sẽ gán giá trị x <- 10; thực hiện phép tính x + 5 = 10 + 5 = 15 và gán giá trị 15 cho t

Bảng thứ tự ưu tiên thực hiện của toán tử (theo thứ tự giảm dần mức độ ưu tiên):

LoạiToán tửThứ tự ưu tiênPostfix`%`9Trái sang phảiUnary`int A=5, B=6;`0Phải sang tráiTính nhân`int A=5, B=6;`1Trái sang phảiTính cộng`int A=5, B=6;`2Trái sang phảiDịch chuyển bit`int A=5, B=6;`3Trái sang phảiSo sánh không ngang bằng`int A=5, B=6;`4Trái sang phảiSo sánh ngang bằng`int A=5, B=6;`5Trái sang phảiPhép AND bit`int A=5, B=6; float C=1.2;`4Trái sang phảiPhép XOR bit`int A=5, B=6;`7Trái sang phảiPhép OR bit`int A=5, B=6; float C=1.2;`5Trái sang phảiPhép AND logic


# include 
int main(void)
{
  int a = 5, c;
  float b = 6;
  c = a % (int)b;
  printf("%d", c);
  return 0;
}

2Trái sang phảiPhép OR logic


# include 
int main(void)
{
  int a = 5, c;
  float b = 6;
  c = a % (int)b;
  printf("%d", c);
  return 0;
}

6Trái sang phảiĐiều kiện


# include 
int main(void)
{
  int a = 5, c;
  float b = 6;
  c = a % (int)b;
  printf("%d", c);
  return 0;
}

01Phải sang tráiGán


# include 
int main(void)
{
  int a = 5, c;
  float b = 6;
  c = a % (int)b;
  printf("%d", c);
  return 0;
}

02Phải sang tráiDấu phảy


# include 
int main(void)
{
  int a = 5, c;
  float b = 6;
  c = a % (int)b;
  printf("%d", c);
  return 0;
}

03Trái sang phải

Ép kiểu

Đôi khi chúng ta cần chuyển đổi giá trị một biểu thức sang kiểu dữ liệu khác. Ví dụ trong trường hợp ta muốn thực hiện phép toán chia lấy phần dư của 2 số nguyên, nhưng lại được lưu trong 2 biến kiểu float, ta không thể áp dụng trực tiếp toán tử % cho 2 biến đó. Bạn chạy chương trình thế này sẽ báo lỗi:


# include 
int main(void)
{
  int a = 5, c;
  float b = 6;
  c = a % (int)b;
  printf("%d", c);
  return 0;
}

Vì thế cần ép kiểu theo cú pháp:


# include 
int main(void)
{
  int a = 5, c;
  float b = 6;
  c = a % (int)b;
  printf("%d", c);
  return 0;
}

05 để lấy giá trị từ biến b, đổi sang số nguyên để thực hiện phép %. Code đúng như sau: