Giả sử tôi viết char c[99] = {'Stack Overflow'};
bằng C hoặc C++. Nó biên dịch tốt nhưng điều này có hợp lệ không? Bởi hợp lệ tôi có nghĩa là không gọi bất kỳ loại hành vi không xác định hoặc không xác định.Đây có phải là câu lệnh C hợp lệ không?
Một lần nữa nếu tôi viết char c[99] = 'Stack Overflow';
gcc than phiền về hằng số multicharacter hiển nhiên nhưng ở trên khi tôi kèm theo trình biên dịch dấu ngoặc nhọn thì rất vui! Tại sao nó như vậy?
Tôi cũng lưu ý rằng puts(c);
sau câu lệnh đầu tiên sẽ xuất 'w' chính xác ký tự cuối cùng của chuỗi chung tại chỗ Stack Overflow
. Tại sao như vậy?
Ai đó có thể giải thích những hành vi này một cách riêng biệt?
Biên dịch và tìm hiểu. – Falmarri
Anh ấy đã nói anh ấy đã biên dịch nó ... – indiv
@Falmarri: Tôi nghĩ bạn giành được giải thưởng RTFQ. Ông nói "nó biên dịch tốt" và cũng mô tả đầu ra, rõ ràng là ông đã kiểm tra nó. Tuy nhiên, thử nghiệm không cho bạn biết liệu thiết bị đó có được định dạng di động hay được xác định rõ ràng theo tiêu chuẩn hay không. –