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"); }
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!