Câu hỏi được gắn thẻ «language-lawyer»

Đối với các câu hỏi về sự phức tạp của thông số kỹ thuật chính thức hoặc có thẩm quyền của ngôn ngữ lập trình và môi trường.

7
Nhầm lẫn về khởi tạo mảng trong C
Trong ngôn ngữ C, nếu khởi tạo một mảng như thế này: int a[5] = {1,2}; thì tất cả các phần tử của mảng không được khởi tạo một cách rõ ràng sẽ được khởi tạo ngầm bằng các số không. Nhưng, nếu tôi khởi tạo một mảng như thế …

4
Tham chiếu rỗng có khả thi không?
Đoạn mã này có hợp lệ (và hành vi được xác định) không? int &nullReference = *(int*)0; Cả hai g ++ và kêu vang ++ biên dịch nó mà không có bất kỳ cảnh báo, ngay cả khi sử dụng -Wall, -Wextra, -std=c++98, -pedantic, -Weffc++... Tất nhiên tham chiếu không …

8
“Else if” có phải là một từ khóa không?
Tôi mới làm quen với C ++. Tôi thường thấy câu lệnh điều kiện như dưới đây: if statement_0; else if statement_1; Câu hỏi: Về mặt cú pháp , tôi sẽ coi else ifnhư một từ khóa duy nhất? Hay nó thực sự là một ifcâu lệnh lồng nhau bên …






4
Tại sao (chỉ) một số trình biên dịch sử dụng cùng một địa chỉ cho các ký tự chuỗi giống hệt nhau?
https://godbolt.org/z/cyBiWY Tôi có thể thấy hai 'some'ký tự trong mã trình hợp dịch do MSVC tạo ra, nhưng chỉ có một ký tự với clang và gcc. Điều này dẫn đến kết quả thực thi mã hoàn toàn khác nhau. static const char *A = "some"; static const char *B …





8
Các nhánh có hành vi không xác định có thể được giả định là không thể truy cập và tối ưu hóa như mã chết không?
Hãy xem xét tuyên bố sau: *((char*)NULL) = 0; //undefined behavior Nó rõ ràng gọi hành vi không xác định. Sự tồn tại của một câu lệnh như vậy trong một chương trình nhất định có nghĩa là toàn bộ chương trình là không xác định hoặc hành vi đó …


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.