Tôi nhầm lẫn về cách quảng cáo loại xảy ra trong trường hợp printf và nói chung. Tôi đã thử các mã saukhuyến mãi loại printf và phần mở rộng ký hiệu
unsigned char uc = 255
signed char sc = -128
printf("unsigned char value = %d \n", uc);
printf("signed char value = %d \n", sc);
Điều này cho phép đầu ra sau đây:
unsigned char value = 255
signed char value = -128
này đã để lại cho tôi băn khoăn về cách thức xúc tiến thực sự diễn ra và cho dù một phần mở rộng dấu hiệu xảy ra hay không. Nếu phần mở rộng dấu được thực hiện thì giá trị 255 sẽ được in dưới dạng giá trị âm (-128 còn lại) và nếu không có phần mở rộng dấu hiệu được thực hiện thì -128 phải được in dưới dạng giá trị dương (255 còn lại). Vui lòng giải thích.