Trick nào bạn thích nhất trong lập trình?

\ :v / Trời mưa buồn quá.Mình mở topic share trick cho xôm xíu. Không quan trọng trick có ích hay không có ích. Miễn là trick =))

Mình trước

Copy chuỗi bằng con trỏ

void myStrCopy(char *src, char *dest) {
 while(*src++ = *dest++);
}

x += 1 bằng phép trừ

x -= ~0;

Đổi số bất kỳ sang nhị phân dùng union + struct :wink:
https://ideone.com/0lFpN1

Javascript
Bỏ phần thập phân trick (đúng hầu hết chứ ko phải 100% :v )

const x = 3.5;
console.log(x | 0)

Javascript: Chuyển mọi thứ thành số với dấu +

const numStr = "123";
const today = new Date();
console.log(+numStr); // 123
console.log(+today); // xuất ra số mili giây
8 Likes

Em không biết đây có gọi là trick không =)) .
Nhưng em thích cấu trúc dữ liệu Priority_queue cho phép tính max cho độ phức tạp 0(1)
và Function sort(Begin_iterator, End_iterator, cmp()) có thể so sánh các đối tượng theo một function đã sắp xếp trước :smiley: .
Trong C++ ạ :grin: :grin:

4 Likes

Đổi số bất kì sang nhị phân là nó làm ntn vậy bạn, mình chưa hiểu?

Union nó chỉ có 1 địa chỉ duy nhất cho tất cả các biến con ở trong, vậy nên khi thay dổi giá trị byte thì bits đồng thời sẽ giữ địa chỉ của thằng byte kia.

Còn dấu : để set bộ nhớ cho biến đó, char là 8 bit, set 1 tức là chỉ lấy 1 bit.

Trick hay :smiley:

4 Likes

lấy số ngày trong tháng (1 ≤ m ≤ 12, chưa tính năm nhuận):
28 | 3 & 0x3bbeecc >> m * 2

1 dòng, magic number đẹp, ko cần mở ngoặc đóng ngoặc :joy:

5 Likes

Không biết có gọi là trick không nhưng e học được một code mà nó in ra 1 dòng chữ liên tục làm crash máy luôn nếu máy yếu :)) lúc đó cứ nghĩ mình là hacker ấy :)) giờ bớt rồi :)) nhưng nhớ vẫn thấy vui :))

2 Likes

Cám ơn bạn nhé, nhờ trick này mình mới biết giới hạn size trong struct :smile:

OvOb cứ share đi bạn. Vui là chính mà

2 Likes

Không biết cái này có được tính là trick không.

Thường thì người ta hay viết code binary search thế này:

while (left <= right) {
    if (left == right) return left;
    else {
        mid = (left + right) / 2;
        ... // lười viết quá
    }
}

Cách này mình dùng rất nhiều lần, và cũng không ít lần trong số đó bị dính chạy vô hạn. Mình cải biên đi 1 tí:

for (int cnt = 0; cnt < 64; cnt++) {
    if (left > right)
        // invalid
    else if (right - left < 2) {
        if valid(left) return left;
        if valid(right) return right;
        // else invalid
    } else {
        // code như bình thường
    }
}

Không bao giờ dính vào chạy vô hạn, mà không sợ sai.

4 Likes

Nhìn chẳng hiểu gì, vào like dạo :stuck_out_tongue:

4 Likes

Đếm số phần tử có trong enum hoặc enum class (C++11)

enum class EnumType
{
  TYPE_ONE,
  TYPE_TWO,
  COUNT,
};

Điều kiện là không được thay thế giá trị trong enum.
// C++20 hình như sẽ reflect được tên trong Enum qua template thì phải

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?