Các loại số nguyên nhỏ hơn int được quảng bá khi hoạt động là được thực hiện trên chúng. Nếu tất cả các giá trị của loại ban đầu có thể là được biểu thị dưới dạng int, giá trị của loại nhỏ hơn được chuyển đổi thành một int; nếu không, nó sẽ được chuyển thành int không dấu.
Chương trình khuyến mãi nguyên bản yêu cầu quảng cáo cho mỗi biến (c và i) đến kích thước int.
short i = 20;
char c = 97;
//The two int values are added and the sum is truncated to fit into the char type.
char a = c + i;
printf("%d, %d, %d %d\n", sizeof(i), sizeof(c), sizeof(c + i),sizeof(a));
2, 1, 4 1
Nguồn
2013-07-19 10:20:45
Quảng bá nguyên mẫu? – nouney
(c + i) được thêm trước và sizeof được tính cho kết quả .. và kết quả là số nguyên .. do đó kích thước là 4 .. –
Nitpick: 'sizeof' không phải là hàm, nó là toán tử. – milleniumbug