博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C&C++(3) - 在C与C++中运行结果不同的程序
阅读量:4071 次
发布时间:2019-05-25

本文共 996 字,大约阅读时间需要 3 分钟。

目录


本篇介绍一些在C和C++中,运行结果存在差异化的一些点。

即编写的同一个程序可以在C和C++中都能编译通过,但是最终结果却可能不同。
这样的程序有很多,下面是几个例子。

1.字符串处理

C和C++对字符处理方式是不同的。例如字符'a', 'b', C语言会当作int整数类型处理,C++会当作字符处理。

例如,下面程序在C中相当于sizeof(int), 而C++中当成sizeof(char)。

#include
int main(){ printf("sizeof('a')=%d\n",sizeof('a')); return 0;}

C打印结果:

bash-4.1$ gcc test.c
bash-4.1$ ./a.out
sizeof('a') = 4
C++打印结果:
bash-4.1$ g++ test.cpp
bash-4.1$ ./a.out
sizeof('a') = 1

2.结构体声明

在C语言中,当声明一个结构体变量时,需要使用struct tag。而在C++中,struct tag不是必须的。

例如,定义一个Student的结构体,在C中,需要使用"struct Student"来声明Student变量,而在C++中,可以省略掉struct关键字,直接使用"Student"。

下面程序显示了这种差异。在C中,它会打印sizeof(int),而在C++中,打印sizeof(struct T)。

#include 
int T; int main(){ struct T { double x; }; //在C++中, T会隐藏掉结构体T。但C不会 printf("%d",sizeof(T)); return 0;}

C打印结果:

bash-4.1$ gcc test.c
bash-4.1$ ./a.out
sizeof(T) = 4
C++打印结果:
bash-4.1$ g++ test.cpp
bash-4.1$ ./a.out
sizeof(T) = 8

3.布尔类型

布尔类型在C和C++中是不同的。

//C中输出4,当作int类型

printf("%d",sizeof(1==1));

//C++中输出1,当作bool类型
cout << sizeof(1==1);

转载地址:http://tmeji.baihongyu.com/

你可能感兴趣的文章
linux串口操作及设置详解
查看>>
安装alien,DEB与RPM互换
查看>>
linux系统下怎么安装.deb文件?
查看>>
编译Android4.0源码时常见错误及解决办法
查看>>
Android 源码编译make的错误处理
查看>>
linux环境下C语言中sleep的问题
查看>>
ubuntu 12.04 安装 GMA3650驱动
查看>>
新版本的linux如何生成xorg.conf
查看>>
xorg.conf的编写
查看>>
启用SELinux时遇到的问题
查看>>
virbr0 虚拟网卡卸载方法
查看>>
No devices detected. Fatal server error: no screens found
查看>>
新版本的linux如何生成xorg.conf
查看>>
virbr0 虚拟网卡卸载方法
查看>>
Centos 6.0_x86-64 终于成功安装官方显卡驱动
查看>>
Linux基础教程:CentOS卸载KDE桌面
查看>>
hd cdnServer 51cdn / ChinaCache / ATS / Apache Traffic Server
查看>>
project web architecture
查看>>
OS + Unix HP-UX
查看>>
OS + Unix Solaris / openSolaris
查看>>