Pertanyaan yang diberi tag «language-lawyer»

Untuk pertanyaan tentang seluk-beluk spesifikasi bahasa dan lingkungan pemrograman formal atau otoritatif

2
Mengapa kelas mesin negara asinkron (dan bukan struct) di Roslyn?
Mari pertimbangkan metode asinkron yang sangat sederhana ini: static async Task myMethodAsync() { await Task.Delay(500); } Ketika saya mengkompilasi ini dengan VS2013 (sebelum kompiler Roslyn) mesin negara yang dihasilkan adalah sebuah struct. private struct <myMethodAsync>d__0 : IAsyncStateMachine { ... void IAsyncStateMachine.MoveNext() { ... } } Ketika saya mengkompilasinya dengan VS2015 …

6
Mengapa referensi bukan "const" di C ++?
Kita tahu bahwa "variabel const" menunjukkan bahwa setelah ditetapkan, Anda tidak dapat mengubah variabel, seperti ini: int const i = 1; i = 2; Program di atas akan gagal untuk dikompilasi; gcc meminta dengan kesalahan: assignment of read-only variable 'i' Tidak masalah, saya bisa memahaminya, tetapi contoh berikut di luar …





3
std :: vector (ab) menggunakan penyimpanan otomatis
Pertimbangkan cuplikan berikut: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } Jelas itu akan crash pada sebagian besar platform, karena ukuran tumpukan standar biasanya kurang dari 20MB. Sekarang pertimbangkan kode berikut: #include <array> #include <vector> int main() { using huge_type = std::array<char, 20*1024*1024>; std::vector<huge_type> v(1); …


3
C ++ decltype dan tanda kurung - mengapa?
Subjek telah dibahas sebelumnya , tetapi ini bukan duplikat. Ketika seseorang bertanya tentang perbedaan antara decltype(a)dan decltype((a)), jawaban yang biasa adalah - aadalah variabel, (a)adalah ekspresi. Saya menemukan jawaban ini tidak memuaskan. Pertama, aadalah ekspresi juga. Pilihan untuk ekspresi primer meliputi, antara lain - (ekspresi) ekspresi-id Lebih penting lagi, frasa …

6
Apa cara yang benar untuk mengonversi 2 byte ke integer 16-bit yang sudah ditandatangani?
Dalam jawaban ini , zwol membuat klaim ini: Cara yang benar untuk mengkonversi dua byte data dari sumber eksternal menjadi integer bertanda 16-bit adalah dengan fungsi pembantu seperti ini: #include <stdint.h> int16_t be16_to_cpu_signed(const uint8_t data[static 2]) { uint32_t val = (((uint32_t)data[0]) << 8) | (((uint32_t)data[1]) << 0); return ((int32_t) val) …

2
Mengapa tata bahasa BNF C memungkinkan deklarasi dengan deretan init-deklarator kosong?
Ketika melihat melalui tata bahasa BNF C, saya pikir itu aneh bahwa aturan produksi untuk deklarasi terlihat seperti ini (menurut https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of% 20C% 20di% 20Backus-Naur% 20form.htm ): <declaration> ::= {<declaration-specifier>}+ {<init-declarator>}* ; Mengapa menggunakan *quantifier (artinya nol atau lebih kejadian) untuk init-declarator? Ini memungkinkan pernyataan seperti int;atau void;menjadi valid secara sintaksis, …

2
Mengapa std :: hash tidak dijamin deterministik?
Selanjutnya, kami menggunakan N4140 (Standar C ++ 14). Menurut § 17.6.3.4 Persyaratan hash , Nilai yang dikembalikan hanya akan bergantung pada argumen k selama durasi program . [Catatan: Demikian semua evaluasi ekspresi h(k)dengan nilai yang sama untuk kmenghasilkan hasil yang sama untuk eksekusi program yang diberikan . - catatan akhir] …




Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.