Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Khai báo và khởi tạo hợp lệ/không hợp lệ trong C


Đề bài

Liệt kê các khai báo và khởi tạo hợp lệ (legal) và không hợp lệ (illegal) trong C.

Khai báo biến

Cú pháp: Kieu_du_lieu v1, v2, ..., vn;

Ví dụ: int sum; float a, b;

2 loại khai báo:

  • Cục bộ (local): Trong khối main/hàm, chỉ dùng trong khối đó.
  • Toàn cục (global): Ngoài main, dùng được toàn chương trình.
int a, b; /* Toàn cục */
main() {
    int c; /* Cục bộ */
}

Khởi tạo biến

Cú pháp: Kieu_du_lieu v1 = gia_tri;

Ví dụ: int sum = 0; float a = 1, b = 4.5;

Ví dụ hợp lệ và không hợp lệ

  • char a = 65; - Hợp lệ: Khởi tạo hằng số.
  • static int p = 20, q = p * p; - Không hợp lệ: Biến static phải khởi tạo bằng hằng số, q dùng biến p.
  • double x = 30 * PI; - Hợp lệ: Biểu thức hằng số (nếu PI là const/define).
  • double diameter[] = {1, PI/2, PI, 2*PI/2}; - Hợp lệ: Khởi tạo mảng bằng biểu thức hằng số.

Chương trình hợp lệ

#include <stdio.h>

void main() {
    int a = 10, b = 20;
    printf("%d ", a < b);   // 1 (true)
    printf("%d ", a <= b);  // 1
    printf("%d ", a > b);   // 0 (false)
    printf("%d ", a >= b);  // 0
    printf("%d ", a == b);  // 0
    printf("%d ", a != b);  // 1
}

Kết quả hợp lệ

1 1 0 0 0 1

Chương trình không hợp lệ

#include <stdio.h>

int main() {
    static int p = 20, q = p * p;  // Lỗi: initializer not constant
    printf("%d %d", p, q);
    return 0;
}

Kết quả không hợp lệ

error: initializer element is not constant
static int p = 20, q = p * p;