Mengapa string::comparemengembalikan, intbukan jenis yang lebih kecil seperti shortatau char? Pemahaman saya adalah bahwa metode ini hanya mengembalikan -1, 0 atau 1.
Bagian kedua, jika saya merancang metode perbandingan yang membandingkan dua objek bertipe Foodan saya hanya ingin mengembalikan -1, 0 atau 1, akankah menggunakan shortatau charsecara umum merupakan ide yang bagus?
EDIT: Saya telah diperbaiki, string::comparetidak mengembalikan -1, 0, atau 1, itu sebenarnya mengembalikan nilai> 0, <0 atau 0. Terima kasih telah membuat saya tetap antri.
Sepertinya jawabannya kira-kira, tidak ada alasan untuk mengembalikan tipe yang lebih kecil daripada intkarena nilai yang dikembalikan adalah "rvalues" dan "rvalues" tersebut tidak diuntungkan karena lebih kecil dari tipe int (4 byte). Juga, banyak orang menunjukkan bahwa register dari sebagian besar sistem mungkin akan berukuran int, karena register ini akan diisi apakah Anda memberi mereka nilai 1, 2 atau 4 byte, tidak ada keuntungan nyata untuk mengembalikan nilai yang lebih kecil.
EDIT 2: Sebenarnya sepertinya ada overhead pemrosesan tambahan saat menggunakan tipe data yang lebih kecil seperti penyelarasan, masking, dll. Konsensus umum adalah bahwa tipe data yang lebih kecil ada untuk menghemat memori saat bekerja dengan banyak data, seperti pada kasus array.
Mempelajari sesuatu hari ini, terima kasih sekali lagi guys!
string::compare()Anda tautkan untuk menyatakan dengan jelas nilai kembaliannya adalah <0, 0, dan> 0 -tidak- -1, 0 dan 1.
shortatau charsebagai gantinya int? Kebanyakan arsitektur akan menyimpan nilai kembalian dari suatu fungsi dalam register, dan intakan muat dalam register seperti halnya shortatau char. Dan menggunakan charuntuk tipe numerik selalu merupakan ide yang buruk, terutama saat Anda perlu menjamin nilai yang ditandatangani ditangani dengan benar.
charakan menjadi ide yang buruk, karena pemeriksaan kode untuk nilai kembalian jika kurang dari nol akan gagal pada platform yang chartidak ditandatangani.