30/09/2018, 16:30

Tò mò nghề nghiệp của @crossover

Continuing the discussion from Những trò lố của ưu tiên toán tử:

Hôm nay mình sẽ nói về một số cái hay nhầm lẫn khi lập trình, tập trung vào những vấn đề như trên tựa đã ghi (làm cái tựa for fun tý)

mọi người thấy            mọi người hay nghĩ               thực tế
*p.f                      (*p).f                           *(p.f)
int *ap[]                 int (*ap)[]                     int *(ap[])
a & b != 0                (a & b) != 0                    a & (b != 0)
a << 4 + b                (a << 4) + b                    a << (4 + b)

!= và == sẽ được ưu tiên hơn các toán tử bitwise.
Các phép tính toán học sẽ ưu tiên hơn phép dịch bit.
Con trỏ tới mảng, và mảng con trỏ chắc gặp nhiều.

int main(int argc, const char * argv[])
{
    int a[] = { 2, 4, 6};
    
    // 1, con tro toi mang
    int (*pta)[] = &a;
    printf("%i 
", *(*pta +2)); // phan tu thu 3
    
    // 2, mang con tro
    int *pa[3];
    
    pa[0] = &a[0];
    pa[1] = &a[1];
    pa[2] = &a[2];
    
    printf("%i 
", **(pa+2)); // phan tu thu 3
    
    return 0;
}

P/S: :d vừa rồi cty mình nhận 1 dự án maintain (code c) toàn bitwise, khoai lòi mắt T_T.

Duy Thien viết 18:38 ngày 30/09/2018

Hi

Tò mó tí, bạn làm lĩnh vực gì vậy

viết 18:46 ngày 30/09/2018

Mới đụng vào 2 thứ: game + ios :).

Duy Thien viết 18:32 ngày 30/09/2018

2 lĩnh vực mình chua bao giờ đụng

Bài liên quan
0