01/10/2018, 16:22

Thắc mắc kiểu unsigned int trong Visual Studio 2017

Chào mọi người, em là người mới học về lập trình, hiện tại hiện tại em đang thắc mắc về vấn đề này mong mọi người hỗ trợ.
Vấn đề là khi em dùng kiểu dữ liệu int,unsigned int như đoạn code bên dưới thì chương trình của em lại in lên màn hình kết quả là -1, trong khi đây là kiểu dữ liệu unsigned int mà sao nó lại in ra số âm, và khi em đổi mấy kiểu dữ liệu trên về kiểu char, unsigned char và short, unsigned short thì nó ra kết quả là 255 và 65535. Bộ chỉ có mỗi kiểu int, unsigned int này là nó có khác gì sao? Hay có gì em sai không?

int main() {
	int a = 4;
	int b = 5;
	unsigned int c;
	c = a - b;
	printf("%d
", c);
	_getch();
	return 0;
}
Trần Hoàn viết 18:38 ngày 01/10/2018

Đối với uint, bạn dùng %u thay cho %d

stackoverflow.com
Hong

Weird result when using the %d specifier to print an unsigned char in C

c, printf
asked by Hong on 06:19PM - 18 Feb 11

viết 18:24 ngày 01/10/2018

cout đâu ko xài lại đi xài printf

KieuThinh viết 18:27 ngày 01/10/2018

Ra là vậy. Em cám ơn mấy bác nhiều!

Trần Hoàn viết 18:33 ngày 01/10/2018

Đó là nếu bạn dùng C. Nhưng VS thì chỉ hỗ trợ C++, bạn nên sử dụng các hàm/phương thức của C++

#include <iostream>
void main()
{
    int a = 4,
    int b = 5;
    unsigned c = a - b;
    std::cout << c;
    std::cin.get();//bạn có thể dùng system("pause");
}
viết 18:38 ngày 01/10/2018

trong C++ ko có void main nha: http://www.stroustrup.com/bs_faq2.html#void-main

Trần Hoàn viết 18:31 ngày 01/10/2018

Bạn ấy hỏi Visual C++, không phả ISO C++.
Trong ISO C++ cũng không có `system(“pause”)

Dark.Hades viết 18:29 ngày 01/10/2018

system

Hàm system có mà ta. Chỉ là cái lệnh pause thì tùy OS thôi
https://en.cppreference.com/w/c/program/system
https://en.cppreference.com/w/cpp/utility/program/system

Florastamine viết 18:29 ngày 01/10/2018

C/C++ compiler của VS cũng chỉ implement từ ISO standard ra (và cộng thêm 1 vài extensions của riêng Microsoft, như các hàm *_s() và intrinsic riêng). Cả hai đều chỉ nhắc tới int main(), không có void main().

viết 18:34 ngày 01/10/2018

quỳ, đưa link của ông viết ra C++ ổng bảo void main “is not and never has been C++”, còn đòi ISO này ISO nọ nữa à

Even if your compiler accepts “void main()” avoid it, or risk being considered ignorant by C and C++ programmers.

ignorant dịch là vô học đấy. Sửa dùm cho rôi còn sửa lại void main thì mình flag 1 cái.

Trần Hoàn viết 18:30 ngày 01/10/2018

Bạn flag thì cứ việc flag. Mình dùng Visual Studio cho phép dùng có nghĩa là nó đúng trên VS. Nhập gia thì tuỳ tục, bạn cứ máy móc đem compiler này gán cho compiler nọ, ok thôi, nếu bạn thích thêm return ở cuối thì bạn cứ thêm, nhưng đừng ép người khác phải theo mình.

Thay vì luôn luôn làm mọi thứ theo ISO, sao bạn không tận dụng tất cả những tài nguyên mình có, là một IDE hàng đầu thế giới?

Mình là một người hoạt động diễn đàn đủ lâu, nếu mình typo bạn hãy sửa, nếu mình có vấn đề về kiến thức, bạn có thể góp ý ở phía dưới như những người khác, không cần lạm quyền mod để sửa lại những nội dung của mình. Mình hiểu mình đang làm gì. Việc mình sửa thành void() chắc chắn sẽ không vi phạm quy định nào của diễn đàn, flag của bạn rất chủ quan, phải không?

viết 18:23 ngày 01/10/2018

chủ quan hay ko thì ko biết nhưng mình đã la làng vụ void main từ lâu lắm rồi: http://diendan.congdongcviet.com/threads/t190348::huong-dan-hoc-cpp-qua-clip-tieng-viet.cpp?p=627538#post627538

gần đây: http://diendan.congdongcviet.com/threads/t408771::lam-sao-de-console-hien-thi-ky-tu-unicode-bang-wcout-lenh-khac.cpp?p=921179#post921179

nếu là chủ quan bạn có thấy mình quan trọng hơn ko? Xin lỗi bạn nếu mình ko quan tâm bạn là ai. Trừ phi bạn viết code nhúng hay code gì đặc biệt cho 1 phần cứng nào đấy chứ viết code C/C++ bình thường thì void main là sai. Sửa có chữ void thành chữ int mà sao khó thế nhỉ? Nhắc cái void main lần 1 lần 2 mình còn lịch sự chứ tới lần thứ n thì mình chửi thẳng thôi.

Trần Hoàn viết 18:34 ngày 01/10/2018

Chửi thì bạn cứ chửi, mình chẳng có quyền ngăn bạn flag, có điều đó là một flag quá kém chất lượng. Bạn cứ viết code cho C/C++ bình thường, mình cứ viết code cho Visual C++ (là C++ không bình thường đó). Hai cái có thể liên quan một chút đến nhau, nhưng viết void main() cho Visual C++ chẳng có gì là sai. Vì Visual C++ không phải là thứ C++ mà bạn đang nói tới, có thể coi như nó là một ngôn ngữ khác.

Có thể nên viết int main, nhưng không có nghĩa là void main sai, bạn không có nhiệm vụ phải sửa. Vấn đề này nó nhảm nhí chả khác gì tranh luận cái này.

void main(){
//hay là
void main()
{

[spoiler]BTW, đối với mình bạn chẳng là ai cả, nên không cần phải trích dẫn những quan điểm cá nhân cực đoan bla bla bla nói về mấy thằng Việt Nam bại não xài void như mình. Lấy lý lẽ ra mà tranh luận, đừng có tôn thờ int như một thứ tôn giáo vậy.[/spoiler]

Bài liên quan
0