Đề 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;