Xu Hướng 10/2023 # Sự Khác Biệt Giữa Const Và Constexpr # Top 15 Xem Nhiều | Channuoithuy.edu.vn

Xu Hướng 10/2023 # Sự Khác Biệt Giữa Const Và Constexpr # Top 15 Xem Nhiều

Bạn đang xem bài viết Sự Khác Biệt Giữa Const Và Constexpr được cập nhật mới nhất tháng 10 năm 2023 trên website Channuoithuy.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

Nhắc lại về const

Từ khóa const (constant – hằng) là từ khóa để chỉ định một biến hay đối tượng là hằng, tức là không thay đổi được giá trị, mọi hành động thay đổi giá trị của hằng đều được compiler báo lỗi. Mục đích của const để tăng ràng buộc khi 1 biến thay đổi sẽ gây ra các hiệu ứng phụ cho chương trình.

Ví dụ khi truyền tham số dạng tham chiếu đường dẫn file vào hàm lấy nội dung của file, mục đích của hàm này chỉ sử dụng nội dung từ đường dẫn để lấy được nội dung file, nếu không ràng buộc const có thể dẫn đến các sơ sót do vô ý thay đổi giá trị đường dẫn và có thể trong chương trình có 1 đoạn mã cần sử dụng lại giá trị này nhưng không còn đúng nữa.

const được dùng trong các trường hợp đối tượng là biến tham trị, biến tham chiếu và tham số của hàm.

int main() { const int x = 7; int y = 8; const int &A = y; int z = 9; int *const p = &x; return 0; } void printName(const char * ID) { }

Bài viết không đi sâu vào phân tích const, nếu cần chi tiết hơn có thể xem bài Thao Tác Với Constant trong C++.

Khái niệm constexpr

constexpr được giới thiệu ở C++11 có chức năng yêu cầu trình biên dịch tính toán hàm hoặc biến tại thời điểm biên dịch. Các biến và hàm này được quy đổi thành 1 giá trị cố định khi biên dịch nên giảm được thời gian thực thi.

constexpr variable

Khi khai báo một biến constexpr và const cũng được hiểu là không thể thay đổi giá trị, nhưng khác là constexpr phải đủ điều kiện để tính toán được trong thời điểm biên dịch, còn const sẽ thuộc thời gian thực thi. Muốn sử dụng constexpr cần phải tuân theo những quy định sau:

Kiểu của biến được thể hiện phải là LiteralType.

Nó cần được khởi tạo ngay tại thời điểm định nghĩa biến.

constexpr int a = 2; constexpr function

Khi khai báo 1 hàm là constexpr function, hàm này phải thỏa các điều kiện:

Nó không phải là virtual function.

Kiểu trả về của hàm phải là LiteralType.

Các biến tham số của hàm phải là LiteralType.

constexpr int add(int a, int b) { return a + b; } constexpr và thời gian biên dịch

Điều quan trọng nhất của constexpr là biểu thức được tính tại thời gian biên dịch:

{ return a.size() + b.size(); }

Như đã làm với hàm add phía trên, chuyển hàm add_vectors_size về dạng constexpr:

{ return a.size() + b.size(); }

Tuy nhiên, cách làm này là không chính xác, vì tại thời điểm biên dịch, tham số truyền vào là 2 vector, trình biên dịch sẽ không biết kích thước của 2 vector đó, vậy nên hàm này không tính trước được.

Đối với một ví dụ khác:

{ return a.size() + b.size(); }

Hàm này lại có thể hoàn toàn thực hiện được, do tại thời điểm biên dịch, trình biên dịch biết được kích thước của hai mảng a và b.

Lời kết

Trong lịch sử phát triển của C++, những lập trình viên hỗ trợ xây dựng lên C++ ngày càng hoàn thiện hơn, cải tiến tốc độ biên dịch là yếu tố rất được quan tâm đến. Từ đó qua các thế hệ C++ tiêu biểu như C++98, C++11, C++14 và tiếp đến là C++17, xuất hiện nhiều hơn các từ khóa mới, khái niệm mới nhầm tối ưu hóa tốc độ và bộ nhớ song song với khả năng phát triển phần mềm tiện lợi, việc của lập trình viên là tiếp tục cập nhật những cải tiến này.

Sự Khác Nhau Giữa Const &Amp; Const Dễ Bay Hơi

const có nghĩa là biến không thể được sửa đổi bởi mã c, không phải biến không thể thay đổi. Nó có nghĩa là không có lệnh nào có thể ghi vào biến, nhưng giá trị của nó có thể vẫn thay đổi.

volatile có nghĩa là biến có thể thay đổi bất kỳ lúc nào và do đó không có giá trị được lưu trong bộ nhớ cache nào có thể được sử dụng; mỗi truy cập vào biến phải được thực hiện đến địa chỉ bộ nhớ của nó.

Một bộ xử lý nhúng có bộ nhớ dữ liệu đọc-ghi dễ bay hơi (RAM) và bộ nhớ dữ liệu chỉ đọc không bay hơi, ví dụ bộ nhớ FLASH trong kiến ​​trúc von-Neumann, nơi dữ liệu và không gian chương trình chia sẻ dữ liệu chung và bus địa chỉ. Nếu bạn khai báo const temp để có giá trị (ít nhất là nếu khác 0), trình biên dịch sẽ gán biến cho địa chỉ trong không gian FLASH, bởi vì ngay cả khi nó được gán cho địa chỉ RAM, nó vẫn cần bộ nhớ FLASH để lưu trữ giá trị ban đầu của biến, làm cho địa chỉ RAM trở nên lãng phí dung lượng vì tất cả các thao tác đều chỉ đọc.

Trong hậu quả:

int temp; là một biến lưu trữ trong RAM, khởi tạo 0 lúc khởi động (cstart), các giá trị được lưu trữ có thể được sử dụng.

const int temp; là một biến được lưu trữ trong (read-ony) FLASH, được khởi tạo thành 0 tại thời gian trình biên dịch, các giá trị được lưu trong bộ nhớ cache có thể được sử dụng.

volatile int temp; là một biến được lưu trữ trong RAM, được khởi tạo thành 0 khi khởi động (cstart), giá trị được lưu trong bộ nhớ cache sẽ KHÔNG được sử dụng.

const volatile int temp; là một biến lưu trữ trong FLASH (read-ony), khởi tạo 0 vào thời điểm biên dịch, các giá trị được lưu trữ sẽ KHÔNG được sử dụng

Ở đây có phần hữu ích:

Ngày nay các bộ xử lý nhúng nhất có khả năng thay đổi bộ nhớ không bay hơi chỉ đọc của họ bằng mô-đun chức năng đặc biệt, trong trường hợp này const int temp có thể thay đổi khi chạy, không được trực tiếp thay đổi. Nói theo cách khác, một hàm có thể sửa đổi giá trị tại địa chỉ nơi temp được lưu trữ.

Ví dụ thực tế sẽ là sử dụng temp cho số sê-ri của thiết bị. Lần đầu tiên bộ xử lý nhúng chạy, temp sẽ bằng 0 (hoặc giá trị được khai báo) và một hàm có thể sử dụng thực tế này để chạy thử nghiệm trong quá trình sản xuất và nếu thành công, yêu cầu được chỉ định số sê-ri và sửa đổi giá trị temp bằng một hàm đặc biệt. Một số bộ xử lý có một dải địa chỉ đặc biệt với bộ nhớ OTP (một lần lập trình) chỉ dành cho điều đó.

Nhưng ở đây có sự khác biệt:

Nếu const int temp là một ID sửa đổi thay vì một số sê-ri một thời gian có thể lập trình và không được khai báo volatile, một giá trị được lưu trữ có thể được sử dụng cho đến khi khởi động kế tiếp, có nghĩa là mới ID có thể không hợp lệ cho đến khi khởi động lại tiếp theo hoặc thậm chí tệ hơn, một số chức năng có thể sử dụng giá trị mới trong khi các hàm khác có thể sử dụng giá trị được lưu trữ cũ hơn cho đến khi khởi động lại. Nếu const int temp IS được khai báo voltaile, thay đổi ID sẽ có hiệu lực ngay lập tức.

Sự Khác Biệt Giữa #Define Và Const Trong C Là Gì?

Sự khác biệt giữa #define và const trong C là gì?

Một số khác biệt quan trọng:

Một cách khó hiểu là một định nghĩa vĩ mô, thì không có gì khó hiểu, đó là một từ khóa, # 1 trong khi biên dịch phải sử dụng trong quá trình tiền xử lý, một cách dễ dàng trong quá trình biên dịch Cũng có thể được sử dụng để khai báo các phương thức, chỉ có thể sử dụng các giá trị, các ứng dụng có thể có phạm vi toàn cầu hoặc phụ thuộc vào phạm vi toàn cầu, nghĩa là có thể có phạm vi toàn cầu hoặc cục bộ tùy theo tuyên bố của họ không thể xác định được bằng cách sử dụng chỉ thị của #

Jason

Một #define là một sự thay thế văn bản được thực hiện bởi bộ tiền xử lý TRƯỚC KHI tệp được biên dịch, mọi lần xuất hiện của macro sẽ được mở rộng thành tệp nguồn. Một #define có thể là các trang của mã nguồn và trong một số trường hợp được sử dụng như một cách tạo các mẫu nguyên thủy trong C.

Const là một vòng loại được sử dụng để báo cho trình biên dịch rằng giá trị sẽ không bị thay đổi. Nó có thể được sử dụng với bất kỳ loại dữ liệu nào ngoài void, tuy nhiên con trỏ void có thể là const.

Xem hướng dẫn tuyệt vời này: Sự khác biệt giữa const và #define trong ngôn ngữ lập trình C, C ++

Tóm lại, #define là một chỉ thị tiền xử lý được sử dụng để xác định các macro, trông giống như các hằng hoặc hàm. Các macro được thay thế trong quá trình tiền xử lý bằng cách sử dụng thay thế văn bản. Một const là một từ khóa được trình biên dịch hiểu để biến một cái gì đó thành hằng số, ví dụ, trong C, một biến được đánh dấu là const là một biến có giá trị không thể thay đổi.

N.B., macro dễ vỡ hơn nhiều so với các hằng số và hàm thích hợp. Ví dụ,

#define THÊM (x, y) x + y int chính (int argc, char * argv []) { int a; a = THÊM (1,2) * 3; }

Được chuyển thành

#define THÊM (x, y) x + y int chính (int argc, char * argv []) { int a; a = 1 + 2 * 3; }

Đó là, a được đặt thành 7, trong khi

#define THÊM (x, y) x + y int thêm (int a, int b) { trả về a + b; } int chính (int argc, char * argv []) { int a; a = thêm (1,2) * 3; }

mang lại một bằng 9

Ngôn ngữ C có một lịch sử kỳ lạ là ngôn ngữ cấp cao / cấp thấp. C tổng hợp có hai bước chính.

Bộ tiền xử lý hoạt động trên các chỉ thị # – ký hiệu, như #define Trình biên dịch C thực sự đọc mã được sửa đổi để tạo mã máy

Sự khác biệt giữa #define và const trong C là gì?

Bước tiền xử lý thay thế giá trị macro #define trong mã nguồn C. Điều này có nghĩa là #define MAXVAL (38) thực sự đặt 38 vào nguồn; nó không phải là một biến và không chiếm các ô nhớ trong chương trình.

Vòng loại const áp dụng cho các biến được khai báo là hằng số. const int var = 38; là một ô nhớ không đổi cụ thể. Sử dụng const để đảm bảo các tham số được truyền cho một hàm don Thay đổi trong trình gọi.

svcministry.org © 2023

Sự Khác Nhau Giữa Var, Let Và Const Trong Javascript

Với việc ra mắt ES6, hai từ khóa khá quan trọng trong JavaScript cũng được giới thiệu là let và const. Trước khi ra đời ES6, cách duy nhất để khai báo một biến trong JavaScript là sử dụng var. Nhưng sự khác biệt giữa var, let và const là gì? Và khi nào chúng ta sử dụng cho phạm vi nào?

1. Var

Như bạn có thể biết, cách thức cũ để khai báo một biến trong JavaScript là sử dụng từ khóa var.

var name = "NhiTT"; console.log(name);

Khi bạn log biến name trong console, đầu ra rõ ràng sẽ là NhiTT . Biến name hiện tại là biến có phạm vi global. Sẽ thú vị hơn khi chúng ta thêm một hàm.

function setup() { var name = "Benjamin"; } setup(); console.log(name);

Có thể sử dụng các biến có phạm vi toàn cầu bên trong một hàm. Điều này có nghĩa là biến age có thể được sử dụng bên trong hàm setup. Điều này sẽ in ra “NhiTT 16 tủi” trong console.

var age = 16; function setup() { var name = "NhiTT"; console.log(name + age + " tủi"); } setup();

Bạn chỉ có thể truy cập các biến có cùng phạm vi hoặc phạm vi cao hơn. Vì vậy, trong một chức năng, bạn có thể truy cập phạm vi toàn cầu. Nhưng, trên toàn cầu, bạn không thể truy cập vào một biến chỉ được tạo trong một hàm.

var age = 16; function setup() { var name = "Benjamin"; age = 15; } setup(); console.log(age);

Nó trở nên khó khăn hơn khi var được sử dụng trong một vòng lặp for hoặc trong một câu lệnh if. Vòng lặp for hoặc lệnh if sẽ không tạo ra các biến của riêng chúng.

Điều này có nghĩa là biến có thể truy cập rộng rãi hơn vòng lặp hoặc câu lệnh mà chúng được tạo. Trong ví dụ bên dưới, biến i có phạm vi toàn cục. Điều này sẽ in ra 10 trong console.

for (var i = 1; i <= 10; i++) { 2. Let

Let sử dụng phạm vi khối và không phạm vi từ vựng. Điều này có nghĩa là let không quan tâm đến toàn cầu hoặc cục bộ hoặc liệu bạn có ở trong một hàm hay không. Thay vào đó, let quan tâm đến khối bạn đang ở. Một khối về cơ bản là bất cứ thứ gì có dấu ngoặc nhọn. Đây có thể là một hàm, nhưng cũng là một vòng lặp for v hoặc một câu lệnh if.

let i = 5; for (let i = 1; i <= 10; i++) {

Trong ví dụ trên, biến i không được cập nhật trong phạm vi toàn cầu; do đó đầu ra sẽ là 5.

Let hữu ích khi bạn muốn có một biến trong phạm vi của nó. Có thể truy cập các biến từ một khối cao hơn, giống như var có thể truy cập các biến từ phạm vi cao hơn.

3. Const

Const hoạt động gần giống như let. Tuy nhiên, sự khác biệt duy nhất là một khi bạn đã gán một giá trị cho một biến const, bạn không thể gán lại nó cho một giá trị mới. Giống như từ khóa implies.

for (const i = 1; i <= 10; i++) {

Ví dụ trên sẽ đưa ra một lỗi cho bạn biết rằng bạn đang cố gán giá trị mới cho 1 const.

Const là hữu dụng với bất cứ khi nào bạn biết rằng bạn có một biến mà bạn sẽ cố định. Và bây giờ bạn tự hỏi, tại sao chúng ta lại lưu trữ một giá trị trong một biến có giá trị không thay đổi?

Một phần của điều đó là đúng. Mặt khác, bạn có thể sử dụng nếu để dễ đọc. Bạn có thể chọn hard code một số giá trị trong code của mình ở nhiều nơi, nhưng sử dụng một biến const làm cho mã của bạn dễ bảo trì hơn. Bất cứ khi nào giá trị mã hóa thay đổi, bạn chỉ phải thay đổi biến const, thay vì đi qua toàn bộ mã tìm kiếm giá trị mã hóa cứng đó.

const username = document.querySelect('input[name="username"]').value;

Điều tương tự áp dụng cho ví dụ tiếp theo. Bất cứ khi nào bạn đang xử lý các đối tượng lớn, bạn cũng có thể sử dụng const để cải thiện khả năng đọc.

const books = api.data.sources['library'].books;

Sử dụng const có thể giúp làm cho code sau này của bạn rõ ràng hơn. Điều này đặc biệt hữu ích khi bạn làm việc trong một nhóm. Nếu ai đó nhìn thấy một mã const, người đó biết rằng giá trị có lẽ không nên thay đổi.

4. Ngoại lệ: Sự kết hợp của const và các đối tượng

Các declaration const tạo ra một tham chiếu chỉ đọc đến một giá trị. Điều đó không có nghĩa là giá trị mà nó giữ là bất biến, chỉ là định danh biến không thể được gán lại.

Điều này có nghĩa là không thể thực hiện được những điều sau vì chúng tôi cố gắng gán lại cho tên người dùng cho biến const.

const user = { 'name': 'NhiTT'}; user = { 'name': 'Truong Thi Nhi'}; console.log(user);

Nhưng có thể thay đổi các thuộc tính của đối tượng này. Điều này là do giá trị mà một const nắm giữ không phải là bất biến.

const user = { 'name': 'NhiTT'}; 5. Khi nào nên sử dụng loại biến nào?

Tôi nghĩ một trong những lý do duy nhất mà bạn nên sử dụng var là khi bạn làm việc trên một base code không hỗ trợ ES6.

Nói chung, let tốt hơn là var vì nó làm giảm phạm vi. Trong hầu hết các trường hợp, bạn sẽ có thể biến tất cả các câu lệnh var thành câu lệnh let mà không có bất kỳ thay đổi ngữ nghĩa nào.

Const được đánh giá là tốt hơn so với let. Từ góc độ kỹ thuật, const không bao giờ là bắt buộc. Mỗi const có thể được thay thế bằng một biến let, nhưng sử dụng const có thể làm cho mã sạch hơn. Trừ khi bạn cần thay đổi giá trị, hãy sử dụng const. Nó bao gồm tất cả lợi ích khi sử dụng let cùng với việc giảm sự hiện diện của các biến chưa được khởi tạo và làm cho mã dễ đọc và thiện cảm hơn. Nếu bạn không chắc chắn liệu mình có cần thay đổi giá trị hay không, hãy biến nó thành một const cho đến khi bạn cần thay đổi nó.

source:

https://medium.com/better-programming/javascript-variables-the-difference-between-var-let-and-const-10efef5d2728

Sự Khác Biệt Giữa To Và Too

Vì và cũng là hai từ được sử dụng rất nhiều trong ngôn ngữ tiếng Anh, điều quan trọng là phải biết sự khác biệt giữa và quá để hiểu nơi sử dụng chúng một cách chính xác. Trước khi cố gắng hiểu sự khác biệt giữa và quá, trước tiên chúng ta hãy có một cái nhìn tốt về hai từ, đến và quá. Cả hai từ, đến và quá, được biết là hơi khó hiểu cho người dùng vì chúng có cách phát âm và chính tả rất giống nhau. To chủ yếu là giới từ, nhưng nó cũng được sử dụng như một trạng từ và quan trọng nhất là nó được sử dụng như một điểm đánh dấu nguyên bản. Chúng ta đều biết rằng hình thức nguyên bản của một động từ được tạo ra với. Sau đó, quá chỉ được sử dụng như một trạng từ. Họ, và cũng vậy, cho thấy sự khác biệt giữa chúng khi nói đến việc sử dụng.

Có nghĩa là gì?

Anh ấy đi London tối nay.

Anh ấy đã chơi bắn để hoàn thiện.

Cô tặng hoa hồng cho bạn mình.

Ở đây, bạn là người nhận.

Anh ấy trẻ hơn em họ của mình.

Anh kết hôn với cô.

Trong cả hai câu, từ để chuyển tải một số loại mối quan hệ giữa hai cá nhân.

To được sử dụng như là nguyên bản trong các biểu thức như để sống, để nói và để đọc. Điều này được thực hiện bởi vì được gọi là điểm đánh dấu nguyên bản. Các ví dụ nêu trên là tất cả các trường hợp cho động từ nguyên thể.

Không có nghĩa là gì?

Mặt khác, quá, được sử dụng để ngụ ý cường độ của một tình huống cụ thể như trong ví dụ sau.

Hôm nay trời nóng quá

Cường độ của nhiệt cũng được mô tả bằng từ này. Do đó, quá được sử dụng như một trạng từ trong câu mang ý nghĩa rất.

Hơn nữa, từ này chỉ ra sự thái quá của một cái gì đó. Đọc câu sau.

Trời quá tối để ra ngoài.

Trong câu này, sự thừa của bóng tối cũng được biểu thị bằng cách sử dụng từ này.

Từ này cũng được sử dụng để truyền đạt ý nghĩa của cũng. Ví dụ, quan sát câu sau.

Anh cũng tham dự cuộc họp.

Trong câu nói trên, từ quá truyền đạt ý nghĩa của cũng. Tương tự như vậy, đôi khi từ quá được sử dụng để truyền đạt ý nghĩa rất giống như trong câu sau đây.

Anh ấy đã quá chắc chắn về sai lầm của đồng nghiệp của mình.

Trong câu này, từ quá truyền đạt ý nghĩa của rất.

Sự khác biệt giữa To và Too là gì?

* To là một giới từ được sử dụng trong trường hợp dative trong khi giảm danh từ. Nó ngụ ý đích hoặc địa điểm.

* Mặt khác, quá, được sử dụng để ngụ ý cường độ của một tình huống cụ thể.

* Đôi khi từ được sử dụng để ám chỉ một trạng thái, để truyền đạt ý nghĩa của người nhận, để chỉ mối quan hệ giữa hai cá nhân và cũng để chỉ dạng động từ nguyên thể.

* Quá biểu thị sự quá mức của một cái gì đó, ý nghĩa rất và ý nghĩa cũng.

Sự Khác Biệt Giữa Is Và Al

Vì hoàn cảnh ra đời và mục tiêu của IS khác so với Al-Qaeda, cách thức hoạt động của chúng, do vậy, cũng hoàn toàn khác nhau. Đó là lý do tại sao chiến lược chống khủng bố của Mỹ vốn được xây dựng để đối phó với Al-Qaeda đã không phù hợp với kẻ thù mới là IS.

Sau sự kiện 11/9, Mỹ đã chi hàng nghìn tỷ đôla xây dựng cơ sở hạ tầng tình báo, thực thi pháp luật và chiến dịch quân sự nhằm vào Al-Qaeda và các phân nhánh của mạng lưới này trên khắp thế giới. Theo điều tra năm 2010 của tờ “Bưu điện Washington”, Mỹ đã lập mới hoặc tái tổ chức khoảng 263 cơ quan chính phủ, trong đó có Bộ An ninh nội địa, Trung tâm chống khủng bố quốc gia và Cơ quan an ninh vận tải.

Chiến lược UAV và đột kích của Mỹ phát huy hiệu quả khi tiêu diệt 75% giới chóp bu Al-Qaeda.

Mỗi năm, tình báo Mỹ thực hiện 50.000 báo cáo về chủ nghĩa khủng bố và có tới 51 cơ quan liên bang, bộ chỉ huy quân sự theo dấu dòng tiền đi và đến các mạng lưới khủng bố. Cơ cấu này đã giúp hạn chế phần lớn các vụ tấn công khủng bố trên đất Mỹ. Hay nói cách khác, hệ thống chống khủng bố này của Mỹ đã hoạt động hiệu quả, nhưng đối với IS lại là một câu chuyện khác.

Đầu tiên, hãy đánh giá về chiến dịch quân sự và tình báo mà Mỹ triển khai để bắt và tiêu diệt các thủ lĩnh của Al-Qaeda qua các cuộc không kích của máy bay không người lái và các vụ đột kích của lực lượng đặc nhiệm. Khoảng 75% các nhân vật chóp bu của Al-Qaeda đã bị tiêu diệt bởi đặc nhiệm Mỹ và máy bay không người lái. Công nghệ này rất phù hợp với các mục tiêu lẩn trốn ở các vùng hẻo lánh, nơi nguy cơ giết nhầm dân thường thấp.

Nhưng chiến thuật này lại tỏ ra không hiệu quả với IS. Các tay súng và giới chóp bu IS hoạt động ở khu vực đô thị, chúng thường lẩn trốn vào trong dân và nằm giữa các tòa nhà khiến máy bay không người lái và lính đặc nhiệm khó mà thực hiện được nhiệm vụ. Ngoài ra, việc chỉ tiêu diệt các thủ lĩnh IS không khiến tổ chức này bị suy yếu đáng kể. Đứng đầu Bộ Chỉ huy quân sự của IS là ban điều hành gồm Baghdadi và hai cấp phó – hai tên này từng là tướng lĩnh trong quân đội Iraq dưới thời Tổng thống Saddam Hussein. Đó là Abu Ali al-Anbari, phụ trách các chiến dịch của IS ở Syria và Abu Muslim al-Turkmani, kiểm soát các hoạt động quân sự tại Iraq.

Tổ chức hành chính dân sự của IS do 12 nhân viên hành chính giám sát, chịu trách nhiệm cai quản các vùng lãnh thổ ở Iraq và Syria và giám sát các hội đồng tài chính, truyền thông, tôn giáo… Mặc dù không hoàn hảo như mô tả trong các video tuyên truyền, nhưng “Nhà nước IS” vẫn có thể vận hành khá trơn tru mà không cần Baghdadi hay các cấp phó của hắn.

IS cũng đặt ra một thách thức khác đối với các chiến thuật chống khủng bố của Mỹ vốn vẫn nhắm vào nguồn tài chính, chiến dịch tuyên truyền và hoạt động tuyển mộ của lực lượng thánh chiến. Một trong những thành công ấn tượng nhất của chiến lược chống khủng bố của Mỹ đó là cắt được nguồn cấp tài chính cho Al-Qeada. Ngay sau vụ 11/9, FBI và CIA, rồi sau có thêm Bộ Quốc phòng đã bắt đầu phối hợp chặt chẽ với nhau trong lĩnh vực tình báo tài chính. Trong cuộc chiến tranh Iraq năm 2003, các nhân viên FBI dưới vỏ bọc nhân viên quân sự Mỹ đã thẩm vấn các nghi can khủng bố bị giam giữ tại nhà tù Guantanamo, Cuba.

Từ đầu năm 2012, IS đã dần chiếm giữ những mỏ dầu chủ chốt ở đông Syria, và nay đã kiểm soát được 60% năng lực sản xuất dầu mỏ tại quốc gia này. Trong khi đó, trong chiến dịch tấn công tại Iraq mùa hè vừa qua, IS cũng đã chiếm được 7 cơ sở sản xuất dầu. Nhóm này đang bán dầu khai thác được ra thị trường chợ đen ở Iraq và Syria. IS cũng xuất lậu dầu mỏ sang Jordan, Thổ Nhĩ Kỳ, nơi chúng đã tìm được nhiều khách hàng sẵn sàng mua món “vàng đen” này với giá thấp hơn giá thị trường. Ước tính, IS thu nhập từ 1 – 3 triệu USD mỗi ngày từ việc buôn dầu mỏ.

IS không chỉ thu lợi từ dầu mỏ. Hồi tháng 6, khi IS chiếm được thành phố Mosul, miền Bắc Iraq, chúng đã cướp được không ít của cải từ ngân hàng Trung ương của tỉnh cùng tên và nhiều ngân hàng nhỏ khác. Chúng còn bán rất nhiều cổ vật có giá trị ra chợ đen. Chúng lấy đồ trang sức, xe hơi, máy móc và cả thú nuôi từ người dân địa phương. Việc kiểm soát một số tuyến đường huyết mạch ở tây Iraq cho phép IS thu được một nguồn tiền ổn định từ việc vận chuyển hàng hóa và phí cầu đường. Chúng còn có được nguồn thu từ các cánh đồng trồng bông và lúa mì ở Raqqa, vựa lúa của Syria.

Kỳ 3: Tình dục và những chiến binh thánh chiến cô đơn

Cập nhật thông tin chi tiết về Sự Khác Biệt Giữa Const Và Constexpr trên website Channuoithuy.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!