Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Kod Sah dalam Kedua-dua C dan C Menghasilkan Output Berbeza Apabila Disusun?

Bolehkah Kod Sah dalam Kedua-dua C dan C Menghasilkan Output Berbeza Apabila Disusun?

Susan Sarandon
Susan Sarandonasal
2024-11-09 01:37:02697semak imbas

Can Valid Code in Both C and C   Produce Different Output When Compiled?

Bolehkah Kod Sah dalam Kedua-dua C dan C Mempamerkan Gelagat Mencapah Apabila Disusun?

Walaupun terdapat banyak persamaan, terdapat perbezaan yang ketara antara C dan C . Ini menimbulkan persoalan: bolehkah kod sah dalam kedua-dua bahasa masih menghasilkan hasil yang berbeza apabila disusun dengan penyusun standard masing-masing?

Prasyarat untuk Perbandingan Adil

Untuk memastikan sesuatu yang bermakna perbandingan, mari kita wujudkan syarat tertentu:

  • Arahan prapemproses (mis., #ifdef) dikecualikan.
  • Aspek yang ditentukan pelaksanaan adalah sama dalam kedua-dua bahasa.
  • Moden versi piawaian dibandingkan (cth., C90 atau lebih baharu dan C 98).

Ketaksamaan Tingkah Laku

Pertimbangkan coretan kod berikut:

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}

Dalam C , kod ini tidak akan menghasilkan output, kerana objek f sementara dicipta dan dimusnahkan. Walau bagaimanapun, dalam C90, ia akan mencetak "hello" kerana fungsi boleh digunakan tanpa pengisytiharan terlebih dahulu.

Varians ini timbul daripada tafsiran berbeza bagi f() dalam C dan C . Dalam C, f() dianggap sebagai panggilan fungsi, manakala dalam C , ia dianggap sebagai pengisytiharan struct.

Atas ialah kandungan terperinci Bolehkah Kod Sah dalam Kedua-dua C dan C Menghasilkan Output Berbeza Apabila Disusun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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