cuốn sách gpt4 ai đã làm

Eclipse định dạng không chính xác quá trình khởi tạo hợp nhất C++ 11

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 00:34:38 26 4
mua khóa gpt4 Nike

Tôi đang cố gắng sử dụng khởi tạo hợp nhất C++ 11 trong Eclipse CDT Luna 4.4 để tôi có thể dễ dàng khám phá nơi xảy ra quá trình thu nhỏ. Tôi có hai câu hỏi. Đầu tiên là các trình định dạng kiểu mã đôi khi coi việc khởi tạo dấu ngoặc nhọn là một khối mã (ví dụ #2). Thứ hai là việc khởi tạo thống nhất mà không có toán tử gán sẽ gây ra lỗi trình biên dịch và cảnh báo (Ví dụ #4).

Dự án của tôi được thiết lập để sử dụng phương ngữ chuẩn ngôn ngữ "ISO C++11 (-std=c++0x)". Sử dụng gcc phiên bản 4.8.1 (GCC).

Dưới đây là một số ví dụ về định dạng, mỗi ví dụ có mã trước và sau:

Ví dụ số 1 - khởi tạo - đúng định dạng, không có thông báo trình biên dịch:

int x = {9};

int x = {9};

Ví dụ #2 - Phân công - Tùy chọn định dạng cho 'Khối' trên tab 'Niềng răng' kiểm soát kiểu câu lệnh 'if', điều này cũng ảnh hưởng đến hành vi gán sau khi 'khối' được đặt thành 'Dòng tiếp theo'. Tôi muốn tiếp tục sử dụng kiểu dấu ngoặc nhọn "dòng tiếp theo" (Allman) cho các câu lệnh "if" của mình, thay vì đặt nó thành "cùng một dòng" (K&R), điều này cũng dừng hành vi dòng mới được quan sát ở đây:

int x2;
x2 = {9};

int x2;
x2 =
{ 9};

Ví dụ #3 - 没有Khởi tạo toán tử gán - đúng định dạng, không có thông báo trình biên dịch:

int y{9};

int y{9};

Ví dụ #4 - 没有Chỉ định toán tử gán - Được định dạng tốt, nhưng được cung cấpDự kiến ​​";" trong thẻ "{" lỗi trước và Câu lệnh không hợp lệ [-Wunused-value] Cảnh báo trình biên dịch:

int y2;
y2{9};

int y2;
y2{9};

Dường như không có trung gian. Việc khởi tạo bằng cách sử dụng khởi tạo thống nhất hoạt động tốt trong ví dụ #1 và #3, nhưng khi thực hiện các bài tập trong ví dụ #2 và #4, ví dụ trước có lỗi định dạng và ví dụ sau tạo ra thông báo trình biên dịch.

Tôi mới làm quen với C++, có ai có gợi ý gì hoặc nhìn thấy một con voi trong phòng theo logic của tôi không? Bằng cách nào đó, tôi có ấn tượng rằng không nên sử dụng khởi tạo thống nhất để phân bổ vì tôi không thấy bất kỳ ví dụ nào về điều đó, nhưng điều khiến tôi bối rối là mặc dù phân bổ ở # 2 có lỗi định dạng, trình biên dịch vẫn đưa ra kết quả chính xác. thu hẹp chuyển đổi... [-Wnarrowing] Trình biên dịch đưa ra cảnh báo khi nhập float.

Đánh giá cao bất kỳ sự giúp đỡ, cảm ơn bạn!

câu trả lời hay nhất

Tôi sẽ thử từNgôn ngữ lập trình C++, tái bản lần thứ 4Hãy bắt đầu với lời giải thích chi tiết hơn có thể được tìm thấy trong11.3Đã tìm thấy một phần.

{}-danh sách Có thể được sử dụng để khởi tạo các biến được đặt tên (Ví dụ #1 và #3). Mà còn,{}-danh sách Có thể được sử dụng làm biểu thức, chúng có thể xuất hiện dưới hai dạng.

  • danh sách hạn chế,T{...} Kiểu tạo là T sự vật
  • danh sách không đủ tiêu chuẩn,{...} Loại phải được xác định dựa trên bối cảnh sử dụng.

Danh sách đủ điều kiện: Nếu bạn có thể khởi tạo biến x như T x {v}, sau đó bạn có thể sử dụng TV} hoặc T{v< mới tạo một đối tượng dưới dạng biểu thức.

Danh sách bị loại: Nó có thể được sử dụng khi loại dự kiến ​​được biết rõ ràng.

  • Toán hạng bên phải của toán tử gán, chẳng hạn như =,+=,-= v.v.(Ví dụ #2)<
  • Thông số chức năng
  • giá trị trả về
  • chỉ số dưới

例子:

int x1{9}; // khởi tạo trực tiếp

int x2 = {9}; // sao chép khởi tạo

int x3;
x3 = {9}; // toán hạng bên phải của toán tử gán
x3 += {1}; // toán hạng bên phải của toán tử gán
x3 = 9 + {1} // lỗi, chỉ toán hạng bên phải của toán tử gán

Do đó, ví dụ #1 và #3 được đặt tên là khởi tạo biến, ví dụ #2 là toán hạng bên phải của toán tử gán (có thể được báo cáo cho Eclipse là một lỗi) và ví dụ #4 là cú pháp không hợp lệ.

Về việc Eclipse định dạng không chính xác quá trình khởi tạo hợp nhất C++ 11, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/24898024/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress