代码在 C 和 C++ 中都是有效的,但会产生不同的输出
此处我们将看到一些程序,如果在 C 或 C++ 编译器中编译,它们将返回不同的结果。我们可以找到许多此类程序,但此处我们将讨论其中的部分程序。
- 在 C 和 C++ 中,字符字面量有不同的处理方式。在 C 中,它们被视为 int,而在 C++ 中,它们被视为字符。因此,如果我们使用 sizeof() 运算符检查大小,它将在 C 中返回 4,在 C++ 中返回 1。
示例
#include<stdio.h> int main() { printf("The character: %c, size(%d)", 'a', sizeof('a')); }
输出
The character: a, size(4)
示例
#include<iostream.h> int main() { printf("The character: %c, size(%d)", 'a', sizeof('a')); }
输出 (C++)
The character: a, size(1)
在 C 中,如果我们使用结构,那么必须在使用它时使用结构标记,直到使用某种类型定义。但在 C++ 中,我们无需使用结构标记来使用结构。
示例
#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); }
输出 (C)
Struct (10|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); }
输出 (C++)
Struct (10|d)
布尔型数据的大小在 C 和 C++ 中是不同的。
示例
#include<stdio.h> int main() { printf("Bool size: %d", sizeof(1 == 1)); }
输出 (C)
Bool size: 4
示例
#include<iostream> int main() { printf("Bool size: %d", sizeof(1 == 1)); }
输出 (C++)
Bool size: 1
广告