编写一个程序,该程序可以在C和C++中编译并运行,但是在由C和C++编译器编译时会产生不同的结果。
可以有很多这样的程序,以下是其中一些。
1)字符字面量在C和C++中的处理方式有所不同。在C语言中,像’a’,’b’,.. etc这样的字符字面量被视为整数,而在C++中则被视为字符。 (有关详细信息,请参见此内容)
例如,以下程序在C中生成sizeof(int)作为输出,而在C++中生成sizeof(char)。
#include
int main()
{
printf("%d", sizeof('a'));
return 0;
}
2)在C语言中,每当声明一个struct变量时,都需要使用struct标记。在C++中,不需要struct标记。例如,让Student有一个结构。在C语言中,我们必须对学生变量使用“ struct Student ”。在C++中,我们可以省略struct并仅使用’ Student ‘。
以下是基于事实并在C和C++中产生不同输出的程序。它在C中打印sizeof(int),在C++中打印sizeof(struct T)。
#include
int T;
int main()
{
struct T { double x; }; // In C++, this T hides the global variable T,
// but not in C
printf("%d", sizeof(T));
return 0;
}
3)布尔结果的类型在C和C++中是不同的。感谢Gaurav Jain提出这一点。
// output = 4 in C (which is size of int)
printf("%d", sizeof(1==1));
// output = 1 in c++ (which is the size of boolean datatype)
cout << sizeof(1==1);
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。