Computer >> Máy Tính >  >> Lập trình >> lập trình C

Mã hợp lệ trong cả C và C ++ nhưng tạo ra đầu ra khác nhau

Ở đây chúng ta sẽ thấy một số chương trình sẽ trả về các kết quả khác nhau nếu chúng được biên dịch trong trình biên dịch C hoặc C ++. Chúng tôi có thể tìm thấy nhiều chương trình như vậy, nhưng ở đây chúng tôi đang thảo luận về một số chương trình trong số đó.

  • Trong C và C ++, các ký tự được coi là khác nhau. Trong C, chúng được coi là int nhưng trong C ++, chúng được coi là ký tự. Vì vậy, nếu chúng ta kiểm tra kích thước bằng toán tử sizeof (), nó sẽ trả về 4 trong C và 1 trong C ++.

Ví dụ

#include<stdio.h>
int main() {
   printf("The character: %c, size(%d)", 'a', sizeof('a'));
}

Đầu ra

The character: a, size(4)

Ví dụ

#include<iostream.h>
int main() {
   printf("The character: %c, size(%d)", 'a', sizeof('a'));
}

Đầu ra (C ++)

The character: a, size(1)

Trong C nếu chúng ta sử dụng struct, thì chúng ta phải sử dụng thẻ struct khi chúng ta đang sử dụng nó cho đến khi một số typedef được sử dụng. Nhưng trong C ++, chúng ta không cần phải dùng thẻ struct để sử dụng cấu trúc.

Ví dụ

#include<stdio.h>
struct MyStruct{
   int x;
   char y;
};
int main() {
   struct MyStruct st; //struct tag is present
   st.x = 10;
   st.y = 'd';
   printf("Struct (%d|%c)", st.x, st.y);
}

Đầu ra (C)

Struct (10|d)

Ví dụ

#include<iostream>
struct MyStruct{
   int x;
   char y;
};
int main() {
   MyStruct st; //struct tag is not present
   st.x = 10;
   st.y = 'd';
   printf("Struct (%d|%c)", st.x, st.y);
}

Đầu ra (C ++)

Struct (10|d)

Kích thước của dữ liệu kiểu Boolean khác nhau trong C và C ++.

Ví dụ

#include<stdio.h>
   int main() {
   printf("Bool size: %d", sizeof(1 == 1));
}

Đầu ra (C)

Bool size: 4

Ví dụ

#include<iostream>
   int main() {
   printf("Bool size: %d", sizeof(1 == 1));
}

Đầu ra (C ++)

Bool size: 1