C/C++ Basics

Kiểu dữ liệu và định dạng đầu ra trong C, C++

Trong bài học này, bạn sẽ khai báo biến số nguyên, số thực và in chúng ra màn hình đúng định dạng trong cả C và C++.

Giới thiệu

C và C++ có chung các kiểu dữ liệu số cơ bản như int cho số nguyên và double cho số thực. Tuy nhiên, cách định dạng khi in dữ liệu lại khác nhau. C dùng chuỗi định dạng của printf, còn C++ dùng luồng xuất (stream) kết hợp với các công cụ trong thư viện iomanip.

Những điểm quan trọng

  • Luôn bật cảnh báo của trình biên dịch (compiler warning) và sửa hết các cảnh báo.
  • Hiểu rõ kiểu dữ liệu và thời gian tồn tại (lifetime) của từng giá trị.
  • Luôn kiểm tra dữ liệu đầu vào và giới hạn chỉ số của mảng.

Code ví dụ bằng C và C++

C
Chạy code →
main.c
#include <stdio.h>

int main(void) {
    int items = 7;
    double price = 3.5;
    printf("items=%d total=%.2f\n", items, items * price);
    return 0;
}
Kết quả khi chạy
items=7 total=24.50
C++
Chạy code →
main.cpp
#include <iomanip>
#include <iostream>

int main() {
    int items = 7;
    double price = 3.5;
    std::cout << "items=" << items << " total="
              << std::fixed << std::setprecision(2) << items * price << '\n';
}
Kết quả khi chạy
items=7 total=24.50

So sánh C và C++

Với printf, mỗi giá trị cần một ký hiệu định dạng tương ứng, ví dụ %d cho int và %.2f cho số thực có 2 chữ số thập phân. Nếu ký hiệu không khớp với kiểu dữ liệu, kết quả sẽ sai. Trong C++, std::cout tự chọn cách in dựa trên kiểu của giá trị, còn std::fixed và std::setprecision điều chỉnh số chữ số thập phân.

C

C dùng các hàm thủ tục gọn nhẹ và thể hiện rõ cách dữ liệu được biểu diễn trong bộ nhớ.

C++

C++ vẫn cho phép làm việc ở mức thấp nhưng bổ sung các kiểu dữ liệu thư viện và công cụ trừu tượng an toàn hơn.

Bài tập mở rộng

Hãy chạy cả hai phiên bản, sau đó thử thay đổi code để quan sát sự khác biệt về mức độ an toàn mà mỗi ngôn ngữ mang lại.

  • Thử nhập dữ liệu sai và các giá trị ở biên.
  • Biên dịch với các cờ -Wall -Wextra -Wpedantic để bật thêm cảnh báo.
  • Tách phần khai báo dùng chung ra file header và phần cài đặt ra file riêng.

Luyện tập với thử thách

Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.

Tất cả thử thách