01/10/2018, 14:46
Giá trị khởi tạo của 1 biến kiểu int trong BorlandC++ ver 5.02
Có đoạn code sau, chạy thì phát hiện phần mềm trên mặc định coi x=1 (vì không khởi tạo x). Điều này có hợp lý trong ngôn ngữ C?
#include <stdio.h>
#include <conio.h>
main()
{
int x;
x+=8;
printf("%d", x);
getch();
}
Cảm ơn quý vị đã đọc & rep.
Bài liên quan
code(refactored and formatted):
Đồng ý là nên dùng int main(); nhưng viết main() thì vẫn chạy được ở BorlandC++ 5 mà; kết quả vẫn vậy.
Hi Nam Hải Vũ.
Có. Giá trị biến khi được khởi tạo là ngẫu nhiên nên nó bằng 1 thì cũng không có gì cả.
Mình đã thử cài Borland C++ 5.02 và có thể xác nhận là mặc định trình biên dịch sẽ cho giá trị bằng 1.
Điều này hơi lạ vì hầu hết các trình biên dịch khác mà mình thấy đều sẽ cho giá trị bằng 0 hoặc giá trị rác nếu biến không được gán giá trị ngay sau khi khởi tạo. Nên anh/chị có thể giải quyết bằng cách gán giá trị cho biến = 0 ngay khi khởi tạo (cũng là thói quen tốt, thường thì người dùng sẽ mặc định giá trị của x = 0 nhưng nếu = 1 sẽ dễ phát sinh bug)
@Phong_Ky_Vo: Mình cũng bằng 1, có lẽ do compiler behavior.
Theo mình nghĩ, đối với 1 trình dịch chuẩn, khi khai báo biến & có phép tính thay đổi giá trị của biến (mà không biết giá trị ban đầu của biến là bao nhiêu) thì trình dịch phải báo lỗi mới phải?
Không có trình dịch nào có thể làm như vậy?
Chuẩn không bắt buộc thường là warning thôi.
Có thêm 1 câu hỏi nhỏ này, vì nó là nhỏ nên có lẽ không nên tạo 1 topic mới.
Có sự khác nhau như thế nào trong 2 cách viết sau (cùng 1 mục đích)
(nghĩa là có thể nói rõ, ví dụ như các ô nhớ sẽ thay đổi như thế nào)
và
Tính năng (Passing by reference) này không có trong ngôn ngữ C. Chỉ có trong C++.
Bạn nên tìm hiểu kỹ và phân biệt C và C++.
C không phải C++ và ngược lại.
Cách viết f(int &var) vẫn chạy được ở BC++5
Tại sao BC++5 vẫn được dùng để chạy code ngôn ngữ C?
Vì bạn đang dùng compiler C++ để biên dịch bằng cách save file có đuôi .cpp.
Bạn save lại file thành .c sẽ thấy lỗi.
Vẫn chạy được ở BC++5 (khi đã save thành file .c) ^^
Các bác có biết compiler C nào không (các bác cho kèm cả link down)? Google thì nó chỉ luôn ra compiler C++
Clang hoặc GCC:
https://gcc.gnu.org/install/binaries.html
https://clang.llvm.org/