Chúng tôi đã tìm thấy một số giá trị lạ được tạo ra, một trường hợp thử nghiệm nhỏ bên dưới. Bản in này "FFFFFFFFF9A64C2A". Có nghĩa là unsigned dài dài dường như đã được ký mở rộng. Nhưng tại sao? Tất cả các loại dưới đây đều chưa được ký, vì vậy tiện ích mở rộng ký hiệu là gì? Đầu ra dự kiến sẽ là "F9A64C2A".Tiện ích mở rộng ký hiệu có ký hiệu dài
#include <stdio.h>
int main(int argc,char *argv[])
{
unsigned char a[] = {42,76,166,249};
unsigned long long ts;
ts = a[0] | a[1] << 8U | a[2] << 16U | a[3] << 24U;
printf("%llX\n",ts);
return 0;
}
Chỉnh sửa nhỏ: 'a [1]' có loại 'unsigned char'. –
@ user964970: Đọc lại. Kiểu 'x << y' không liên quan gì đến kiểu' y'. –
@Dietrich Epp: Cảm ơn bạn. –