Một số chương trình cho kết quả khác nhau khi biên dịch bằng C vs C++.
- Hằng ký tự (character literals): Trong C là
int, trong C++ làchar.sizeof('a')trả về 4 (C) vs 1 (C++).
Ví dụ C
#include <stdio.h>
int main() {
printf("Ky tu: %c, kich thuoc(%d)", 'a', sizeof('a'));
}
Kết quả C
Ky tu: a, kich thuoc(4)
Ví dụ C++
#include <iostream>
int main() {
printf("Ky tu: %c, kich thuoc(%d)", 'a', sizeof('a'));
}
Kết quả C++
Ky tu: a, kich thuoc(1)
- Struct tag: C bắt buộc dùng
struct Tenkhi khai báo biến, C++ không cần.
Ví dụ C
#include <stdio.h>
struct MyStruct { int x; char y; };
int main() {
struct MyStruct st; // bắt buộc struct
st.x = 10; st.y = 'd';
printf("Struct (%d|%c)", st.x, st.y);
}
Ví dụ C++
#include <iostream>
struct MyStruct { int x; char y; };
int main() {
MyStruct st; // không cần struct
st.x = 10; st.y = 'd';
printf("Struct (%d|%c)", st.x, st.y);
}
- Kích thước bool: C (C99)
_Boolkích thước 1 byte nhưng biểu thức logic như1==1kiểu int (4 bytes). C++boolkích thước 1 byte.
Ví dụ C
#include <stdio.h>
int main() { printf("Bool size: %d", sizeof(1 == 1)); }
Kết quả C
Bool size: 4
Ví dụ C++
#include <iostream>
int main() { printf("Bool size: %d", sizeof(1 == 1)); }
Kết quả C++
Bool size: 1