30/09/2018, 18:38

Cần giải thích code cho newbie

Chào các bạn, mình là newbie tìm hiểu lập trình C. Mình có thắc mắc muốn hỏi các sư phụ về bài tính bình phương:

#include <stido.h>
void main()
{
        int a, square;
        printf("
Nhap vao so nguyen: ");
        scanf("%d",&a);
        square = a*a;
        printf("
Gia tri binh phuong: %d",square);
        return 0;
}

Vấn đề là khi mình nhập a = 32767 thì square vẫn tính ra giá trị đúng. Tuy nhiên theo mình được biết thì kiểu int chỉ từ -32768 đến 32767, mà ở đây square vượt ra ngoài phạm vi đó. Thậm chí mình nhập a = 32768 thì kết quả vẫn ra đúng. Mình xài CodeBlocks. Có bạn nào biết giải thích hộ mình với! Thanks!

Pham Van Hai viết 20:38 ngày 30/09/2018

Bạn hiểu nhầm rồi, kiểu int không cố định mà phụ thuộc vào kích thước dữ liệu của CPU và compiler.
ví dụ, CPU 32-bit thì kiểu int thường là 32-bit (ngày nay kiểu thường int là 32 bit).
nên giá trị của nó từ −2,147,483,648 --> 2,147,483,647.

Bạn tham khảo thêm ở đây:

stackoverflow.com
Vijay

Does the size of an int depend on the compiler and/or processor?

c++, c, types
asked by Vijay on 04:59AM - 25 Feb 10

viết 20:54 ngày 30/09/2018

Cám ơn bạn Đúng là còn có nhiều thứ mình phải tìm hiểu thiệt.

Trần Tuấn An viết 20:51 ngày 30/09/2018

thông thường thì khi viết hàm void thì ko cần giá trị trả về bạn nhé

Bài liên quan
0