📜  编写一个在C和C++中产生不同结果的程序

📅  最后修改于: 2021-05-30 08:34:10             🧑  作者: Mango

编写一个程序,该程序可以在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等的更多准备工作,请参阅“完整面试准备课程”