


Blog Mingguan: Empat Perkara Menarik Yang Saya Temui Minggu Ini
Sep 08, 2024 pm 08:35 PM1. Mengelakkan Mengelirukan Nama Fail dalam Kod VS
Apabila menulis fail C++ dalam Kod VS, saya menamakan fail terlebih dahulu.c.cpp. Selepas melengkapkan program, saya mengalami ralat semasa pelaksanaan. Selepas 30 minit menyelesaikan masalah, saya mendapati isu itu terletak pada nama fail:
Sambungan .c menyebabkan IDE tersilap mengenal pasti ia sebagai atur cara C, menyebabkan Kod VS menggunakan gcc (pengkompil C) dan bukannya g++ (pengkompil C++) untuk menyusun kod saya.
Kapsyen: Bodohnya!
- Penyelesaian: Dalam fail tasks.json, tukar baris 'command' daripada gcc kepada g++.
- Pelajaran yang dipelajari: Gunakan sambungan .cpp yang jelas untuk fail C++ untuk mengelakkan kekeliruan yang tidak perlu.
2. Falsafah Reka Bentuk Merentas Platform Java
Falsafah reka bentuk Java berbeza dengan ketara daripada bahasa tersusun tradisional:
Kompilasi Tradisional:
- Bahasa seperti C++ menyusun terus ke dalam kod mesin untuk khusus platform (cth., Windows, Mac, Linux)
- Fail boleh laku (.exe) yang terhasil hanya boleh dijalankan pada platform sasaran
Pendekatan Java:
- Pengkompil menjana kod perantaraan (kod bait)
- Kod bait ini boleh dijalankan pada mana-mana platform dengan Mesin Maya Java (JVM) dipasang
- JVM bertanggungjawab untuk menterjemah bytecode ke dalam kod mesin untuk platform semasa
Reka bentuk ini mencapai matlamat "Tulis Sekali, Jalankan Di Mana-mana", manakala C++ boleh laku (fail .exe) terhad untuk dijalankan pada satu platform.
Kelebihan:Program yang sama boleh dijalankan pada komputer yang berbeza tanpa pengubahsuaian
Kelemahan:Langkah tambahan dalam proses boleh membuat kompilasi sedikit perlahan berbanding kaedah tradisional
Tulis sekali, Jalankan ke mana-mana
1
---------James Gosling
Salin selepas log masuk
3. Dua Mod Kompilasi Biasa
- Mod nyahpepijat berorientasikan penyahpepijatan, dengan pengoptimuman yang lebih sedikit. Ia digunakan terutamanya untuk menyahpepijat program.
- Mod keluaran digunakan terutamanya untuk menjana versi keluaran, memfokuskan pada pengoptimuman dan hanya mengekalkan fungsi penyahpepijatan asas.
4. Memahami Casting Jenis Paksa dari Perspektif Aras Rendah
Endian Kecil: Bait paling tidak ketara disimpan di alamat paling rendah. Kaedah storan ini muncul untuk memudahkan pembacaan memori CPU, yang berlaku dari alamat rendah ke tinggi. Menariknya, ini bertentangan dengan kebiasaan manusia menulis nombor.
Contohnya:
Perwakilan binari 329933 ialah 00000000 00000101 00001000 11001101
Storan Little Endian: 11001101 00001000 00000101 00000000
Seperti yang dapat kita lihat, Little Endian membalikkan susunan bait dalam perwakilan binari. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa susunan bit dalam setiap bait kekal tidak berubah!
Permainan Seronok untuk Memahami Casting Jenis Paksa
Percubaan kegemaran saya untuk memperkenalkan pemutus jenis!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Output:
1 2 |
|
Saya ingin tahu mengapa ia menghasilkan -51?
Penjelasan
- (char*)&a menunjuk ke bait pertama int. Bait pertama 11001101ditafsirkan sebagai aksara.
- Bit 1 tertinggi menunjukkan nombor negatif, selepas penukaran pelengkap dua, kita mendapat -51 (rakan-rakan yang biasa dengan pelengkap dua boleh mengesahkan sama ada ia mewakili -51)
Adakah ini satu kebetulan? Jom cuba dua lagi contoh
1 2 |
|
Cubalah:
- Cuba jalankan kod yang dinyatakan di atas dan perhatikan outputnya.
- Pertimbangkan mengapa bait kedua dan ketiga menghasilkan output sedemikian. Sila bincangkan perkara ini di bahagian komen.
- Bolehkah anda menggunakan penghantaran jenis paksa pada jenis data lain? Cubalah!
Maklumat Tambahan: Two's Complement
Apabila melakukan penghantaran jenis paksa, (char)p akan menunjuk ke alamat bait pertama int empat bait, iaitu 11001101.
1 paling kiri mewakili tanda negatif, menunjukkan ia nombor negatif. Selepas menggunakan pelengkap dua, kami mendapat: 0110011 (7 bit terakhir)
(Nota: Untuk nombor positif, pelengkap kedua-duanya hanyalah perwakilan perduaan nombor perpuluhan. Untuk nombor negatif, pelengkap kedua-duanya diperoleh dengan menyongsangkan semua bit kecuali bit paling kiri (tertinggi), kemudian menambah 1 ke bahagian paling kanan.)
Menukar ini kepada perpuluhan memberikan kita -51. Menarik kan?
Manfaat Two's Complement:
- Ia membolehkan kedua-dua jenis positif dan integer dikira menggunakan hanya penambah, menghapuskan keperluan untuk penolakan dan memudahkan keperluan perkakasan.
- Ia menyediakan perwakilan binari unik untuk sifar. 10000000 tidak mewakili -0, tetapi -128, manakala 00000000 mewakili 0, bukan +0.
Ramai orang tertanya-tanya mengapa ia -128. Jika anda tahu jawapannya, sila kongsikan di ruangan komen. Ini bukan sahaja membantu orang lain tetapi juga membantu anda menyusun fikiran anda.
Atas ialah kandungan terperinci Blog Mingguan: Empat Perkara Menarik Yang Saya Temui Minggu Ini. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ganti aksara rentetan dalam javascript

jQuery mendapatkan padding/margin elemen

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom
