Chào mọi người
Chuyện là mình đang viết một cái hàm nho nhỏ để check overflow của phép cộng của hai số
code vd:
typdef unsigned char uchar;
int uadd_ok(uchar a, uchar b) {
return !((a + b) < a);
}
mình chạy code trên với a = 255, b = 255 trả về 1
mà đáng lý ra phải là 0
nên mình sửa lại chỗ return thành:
return !((uchar)(a + b) < 0));
kết quả như mong đợi, bằng 0
lọ mọ một hồi thì mình quyết định thử:
printf("%du\n", sizeof(a + b));
kết quả trả về lại bằng 4 (int trong máy 64 bít)
Cho mình hỏi đây có phải tiêu chuẩn của thằng C hay không hay là cách thằng compiler nó implement như vậy hay là phụ thuộc vào từng kiến trúc máy.
Xin cảm ơn.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?