Nhiều biến trong câu lệnh if C++

Mỗi khai báo phải dành cho một biến duy nhất, trên dòng riêng của nó, với chú thích giải thích về vai trò của biến đó. Khai báo nhiều biến trong một lần khai báo có thể gây nhầm lẫn về kiểu của biến và giá trị ban đầu của chúng. Nếu có nhiều hơn một biến được khai báo trong một khai báo, phải cẩn thận rằng kiểu và giá trị khởi tạo của biến được xử lý chính xác

Ví dụ về mã không tuân thủ

Trong ví dụ mã không tuân thủ này, lập trình viên hoặc người đánh giá mã có thể nhầm tưởng rằng hai biến src và c được khai báo là char *. Trên thực tế, src có loại là char *, trong khi đó, c có loại là #include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; } 3

Giải pháp tuân thủ

Trong giải pháp tuân thủ này, mỗi biến được khai báo trên một dòng riêng

char *src; /* Source string */ char c; /* Character being tested */

Mặc dù thay đổi này không ảnh hưởng đến quá trình biên dịch, nhưng ý định của lập trình viên rõ ràng hơn

Ví dụ về mã không tuân thủ

Trong ví dụ về mã không tuân thủ này, lập trình viên hoặc người đánh giá mã có thể nhầm tưởng rằng cả #include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; } 4 và #include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; } 0 đều đã được khởi tạo thành 1. Trên thực tế, chỉ có #include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; } 0 được khởi tạo, còn #include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; } 4 vẫn chưa được khởi tạo

Giải pháp tuân thủ

Trong giải pháp tuân thủ này, rõ ràng là cả #include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; } 4 và #include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; } 0 đều đã được khởi tạo thành 1

ngoại lệ

DCL04-C-EX1. Nhiều biến điều khiển vòng lặp có thể được khai báo trong cùng một câu lệnh #include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; } 5, như thể hiện trong hàm sau

#include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; }

Macro #include /* For CHAR_BIT */ #include /* For size_t */   extern size_t popcount(uintmax_t); #define PRECISION(umax_value) popcount(umax_value)  size_t bitcount(size_t n) { const size_t limit = PRECISION(SIZE_MAX); size_t count = 0; for (size_t i = 0, j = 1; i < limit; ++i, j <<= 1) { if (n & j) ++count; } return count; } 6 cung cấp độ chính xác chính xác cho bất kỳ loại số nguyên nào và được xác định trong INT35-C. Sử dụng độ chính xác của số nguyên—xem quy tắc đó để biết thêm thông tin

DCL04-C-EX2. Nhiều khai báo biến đơn giản có thể được khai báo trên cùng một dòng với điều kiện là không có khởi tạo. Một khai báo biến đơn giản là một khai báo không phải là con trỏ hoặc mảng

Đánh giá rủi ro

Khai báo không quá một biến cho mỗi lần khai báo có thể giúp mã dễ đọc hơn và loại bỏ sự nhầm lẫn

Deepanshu thành lập ListenData với một mục tiêu đơn giản - Làm cho các phân tích trở nên dễ hiểu và dễ theo dõi. Ông có hơn 10 năm kinh nghiệm trong lĩnh vực khoa học dữ liệu. Trong nhiệm kỳ của mình, ông đã làm việc với các khách hàng toàn cầu trong nhiều lĩnh vực khác nhau như Ngân hàng, Bảo hiểm, Cổ phần tư nhân, Viễn thông và Nhân sự

Có một loại dữ liệu; . Một tuyên bố kết thúc bằng một dấu chấm phẩy. Nhiều biến đã được khai báo ở đây trong một câu lệnh

Bây giờ, hãy xem xét các báo cáo gia tăng sau đây

    int i++;
    int j++;
    int k++;

Ba câu lệnh này có thể được thay thế bằng một câu lệnh, như sau

int i++, j++, k++;

Ở đây, có ba biểu thức trong một câu lệnh cho một kiểu dữ liệu

Cũng xem xét ba tuyên bố có điều kiện sau đây

    i

Chủ đề