一个程序在C语言和C++语言环境下得到不同结果

偶然在GeeksforGeeks上面看到一篇有意思的文章Write a program that produces different results in C and C++

文章中给出了同一个程序经过C编译器和C++编译器编译并运行后,得到不同的结果的两个例子。

正如文章中所说,由于C++兼容C语言,因此,许多C程序都可以采用C++编译器编译并运行,但是,某些程序经过两种不同的编译器编译后会产生不同的结果。

(1)第一种情况是C语言对于字符常量的处理与C++不同,在C语言中,字符常量以int类型存在,而C++中,字符常量以char存在。

比如,下面这个程序:

#include<stdio.h>
int main()
{
  printf("%d", sizeof('a'));
  return 0;
}
它分别保存为a.c和a.cpp,并分别用gcc和g++编译后,运行后的结果分别是4和1。

这里要注意,只是C语言中的字符常量当作int处理,sizeof(char)还是1。

(2)第二种情况是C语言对于结构体的struct关键字的不同处理。C语言中,无论何时声明一个结构体变量,都要将struct带上,但是C++中就不需要。

也就是说,C语言中,使用一个结构体变量必须在变量名前加struct,而C语言中,就可以直接使用变量名。

比如,下面的程序:

#include <stdio.h>
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;
}
C语言中,由于要引用一个结构体变量必须要加上struct关键字,这里没有加,因此,它会把T当作int类型来处理,结果是4。

C++中,引用结构体变量不需要加上struct关键字,因此T既可以是int T,也可以是struct T,但是由于int T在外层,它在内层不可见,因此,程序会将T当作struct T来处理,结果是8。

### 回答1: C 语言是一种广泛使用的计算机编程语言,由 Dennis Ritchie 在 1970 年开发,它是一种面向过程的语言,致力于最大限度地提高运行效率。C++ 是一种面向对象的编程语言,由 Bjarne Stroustrup 在 1979 年开发,它增加了 C 语言的许多功能,包括面向对象编程、泛型编程和程序异常处理。两者最大的不同是 C 语言是面向过程的,而 C++ 是面向对象的。 ### 回答2: C语言C++语言是两种编程语言,它们有一些细微但重要的不同之处。 首先,C语言是一种面向过程的编程语言,而C++语言是一种面向对象的编程语言。面向过程的编程语言主要关注如何通过一系列的步骤来处理数据,而面向对象的编程语言则通过创建对象和设计类来组织和管理数据和功能。 其次,C与C++语言在语法上也有一些不同C语言主要关注数据的处理和控制流程,它使用简单的结构和指令来实现这些功能。而C++语言C语言的基础上添加了更多的功能和特性,比如类和对象、继承和多态性等。C++语言也支持面向对象的编程范式,这使得代码的组织和重用更加方便。 另外,C语言C++语言在库的支持上也有不同C语言主要使用标准C库来实现基本的功能,如输入输出、字符串处理等。而C++语言则在C语言的基础上添加了标准模板库(STL)和标准C++库,这些库提供了丰富的数据结构和算法,方便开发人员进行快速开发。 最后,C语言C++语言在编程风格上也有一些差异。C语言通常倾向于使用简洁、高效的代码来实现功能,而C++语言则更加注重面向对象的设计,强调代码的可读性和可维护性。 综上所述,C语言C++语言在面向对象支持、语法特性、库的支持以及编程风格等方面存在明显的不同。根据具体的需求和项目要求,开发人员可以选择合适的编程语言来进行开发工作。 ### 回答3: C语言C++语言是两种不同的编程语言。 首先,C语言是一种过程化的编程语言,它注重的是程序执行过程,使用函数和变量来进行编程。C语言的代码相对简洁,执行效率高,适用于嵌入式系统或对执行效率要求较高的系统。C语言的语法相对简单,没有面向对象的特性。 而C++语言则是在C语言的基础上发展而来的,它既支持过程式编程,又支持面向对象的编程。C++语言引入了类、对象、封装、继承和多态等概念,使得代码更加模块化、可复用和易于维护。C++语言提供了更多的语法特性和数据类型,如命名空间、模板、异常处理等,使得编程更加灵活和强大。 另外,C++语言相对于C语言来说,更加注重类型的安全性和代码的可读性。C++语言引入了强制类型转换和运算符重载等特性,可以更加方便地处理不同类型的数据。此外,C++语言还提供了一些标准库,如STL(标准模板库),使得编程更加高效和快速。 总结而言,C语言C++语言在语法、特性和用途上有所不同C语言是一种简洁高效的过程化编程语言,而C++语言则是一种支持面向对象的编程语言,拥有更多的语法特性和库函数,适用于需要面向对象特性和更高抽象程度的编程任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值