Mengapa Kod Yang Sama Mencetak 'hello' dalam C dan Tiada apa-apa dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-11-09 16:25:03
asal
746 orang telah melayarinya

Why Does the Same Code Print

Perbezaan Tingkah Laku dalam Kod Sah Antara C dan C

Walaupun C dan C berkongsi banyak persamaan, terdapat beberapa keadaan di mana kod sah dalam kedua-duanya bahasa boleh menghasilkan hasil yang berbeza apabila disusun dalam setiap bahasa masing-masing.

Panggilan Fungsi dan Pengisytiharan Objek

Satu senario sedemikian adalah berkaitan dengan perbezaan dalam panggilan fungsi dan pengisytiharan objek. Dalam C90, fungsi boleh dipanggil tanpa diisytiharkan terlebih dahulu. Dalam C, bagaimanapun, fungsi yang tidak diisytiharkan tidak dibenarkan. Perbezaan ini boleh membawa kepada tingkah laku yang berbeza apabila menyusun kod berikut:

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}
Salin selepas log masuk

Dalam C, kod ini tidak akan mencetak apa-apa kerana objek sementara jenis f dicipta dan dimusnahkan, mengakibatkan kehilangan ahli x . Dalam C90, bagaimanapun, ia akan mencetak "hello" kerana fungsi boleh dipanggil tanpa diisytiharkan.

Nyahkekaburan Nama

Satu lagi perkara yang perlu diberi perhatian ialah penggunaan nama f dalam kod contoh. Kedua-dua C dan C membenarkan penggunaan nama yang sama untuk fungsi dan struktur. Untuk mencipta objek dalam C , struct f mesti dinyatakan secara eksplisit. Jika kata kunci struct ditinggalkan, kod tersebut akan ditafsirkan sebagai panggilan fungsi. Perbezaan ini, digabungkan dengan perbezaan dalam konvensyen panggilan, menyumbang kepada tingkah laku berbeza yang diperhatikan semasa menyusun kod dalam C dan C .

Atas ialah kandungan terperinci Mengapa Kod Yang Sama Mencetak 'hello' dalam C dan Tiada apa-apa dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan