Bạn đang dùng trình biên dịch nào ? Nếu là trình biên dịch 32bit thì đương nhiên sẽ không gây ra tràn số với đoạn mã này.
Mình dùng gcc, thay int bằng short thì thấy có tràn số.
Em có đoạn mã sau:
#include<stdio.h>
#include<conio.h>
main()
{ int a=0x7FFF;
int c=a+a;
unsigned int b=0x7FFF;
printf("%d+%d=%d",a,a,c);
printf("\nb=%u+b=%u=%u",b,b,b+b);
getch();
}
Em muốn hỏi tại sao c là 1 số có dấu thì lẽ ra chỉ có giá trị trong khoảng từ -32768->32767 thôi, mà ở đây c vẫn in ra được giá trị đúng vượt quá giá trị trên mà ko gây ra lỗi tràn số ?
Bạn đang dùng trình biên dịch nào ? Nếu là trình biên dịch 32bit thì đương nhiên sẽ không gây ra tràn số với đoạn mã này.
Mình dùng gcc, thay int bằng short thì thấy có tràn số.