Rumah hujung hadapan web tutorial js Blog Mingguan: Empat Perkara Menarik Yang Saya Temui Minggu Ini

Blog Mingguan: Empat Perkara Menarik Yang Saya Temui Minggu Ini

Sep 08, 2024 pm 08:35 PM

1. 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.

Weekly Blog: Four Interesting Things I Encountered This Week

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:

  1. Bahasa seperti C++ menyusun terus ke dalam kod mesin untuk khusus platform (cth., Windows, Mac, Linux)
  2. Fail boleh laku (.exe) yang terhasil hanya boleh dijalankan pada platform sasaran

Pendekatan Java:

  1. Pengkompil menjana kod perantaraan (kod bait)
  2. Kod bait ini boleh dijalankan pada mana-mana platform dengan Mesin Maya Java (JVM) dipasang
  3. 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.

Weekly Blog: Four Interesting Things I Encountered This Week

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

# include <iostream>

int main()

 

{

    int a;

 

    int *p;

 

    a=329933;

 

    p=&a;

 

    char *q;

 

    q=(char*)p;

 

    printf("%d\n",*p);

 

    printf("%d\n",*q);

 

}

Salin selepas log masuk

Output:

1

2

329933

-51

Salin selepas log masuk

Saya ingin tahu mengapa ia menghasilkan -51?

Penjelasan

  1. (char*)&a menunjuk ke bait pertama int. Bait pertama 11001101ditafsirkan sebagai aksara.
  2. 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

printf("%d\n",*(q+1));

printf("%d\n",*(q+2));

Salin selepas log masuk

Cubalah:

  1. Cuba jalankan kod yang dinyatakan di atas dan perhatikan outputnya.
  2. Pertimbangkan mengapa bait kedua dan ketiga menghasilkan output sedemikian. Sila bincangkan perkara ini di bahagian komen.
  3. 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:

  1. Ia membolehkan kedua-dua jenis positif dan integer dikira menggunakan hanya penambah, menghapuskan keperluan untuk penolakan dan memudahkan keperluan perkakasan.
  2. 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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Ganti aksara rentetan dalam javascript

jQuery mendapatkan padding/margin elemen jQuery mendapatkan padding/margin elemen Mar 01, 2025 am 08:53 AM

jQuery mendapatkan padding/margin elemen

periksa jQuery jika tarikh sah periksa jQuery jika tarikh sah Mar 01, 2025 am 08:51 AM

periksa jQuery jika tarikh sah

10 Tab Accordion JQuery 10 Tab Accordion JQuery Mar 01, 2025 am 01:34 AM

10 Tab Accordion JQuery

10 patut diperiksa plugin jQuery 10 patut diperiksa plugin jQuery Mar 01, 2025 am 01:29 AM

10 patut diperiksa plugin jQuery

HTTP Debugging dengan Node dan HTTP-Console HTTP Debugging dengan Node dan HTTP-Console Mar 01, 2025 am 01:37 AM

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom Tutorial Persediaan API Carian Google Custom Mar 04, 2025 am 01:06 AM

Tutorial Persediaan API Carian Google Custom

jQuery tambah bar scroll ke div jQuery tambah bar scroll ke div Mar 01, 2025 am 01:30 AM

jQuery tambah bar scroll ke div

See all articles