Tôi có một câu hỏi khá cơ bản, nhưng tôi không chắc liệu tôi có hiểu khái niệm này hay không. Giả sử chúng ta có:Nhân hai số nguyên trong C++
int a = 1000000;
int b = 1000000;
long long c = a * b;
Khi tôi chạy điều này, c cho thấy giá trị âm, vì vậy tôi cũng thay đổi a và b thành dài và sau đó mọi thứ đều ổn. Vậy tại sao tôi phải thay đổi a và b, khi giá trị của chúng nằm trong phạm vi int và sản phẩm của chúng được gán cho c (dài và dài)?
Tôi đang sử dụng C/C++
các ints không thăng long trước khi nhân lên, họ vẫn còn ints và sản phẩm là tốt. Sau đó, sản phẩm được đúc dài, nhưng quá muộn, tràn đã xảy ra. Có một hoặc một lâu dài cũng nên hoạt động, vì cái kia sẽ được quảng bá. –
Bạn nên gắn thẻ ngôn ngữ lập trình bạn đang sử dụng vì các ngôn ngữ khác nhau có thể giới thiệu các hành vi khác nhau;) – alfasin
Tùy thuộc vào máy và phiên bản C bạn đang sử dụng kích thước của 'int' có thể thay đổi. – Jay