C 和 C+ 之间的关系是紧密且复杂的。最初是作为 C 语言的一个扩展开发的,目的是在不放弃 C 的强大功能和效率的同时,增加对象导向编程,泛型编程和其他一些特性。下面是 C 和 C++ 之间主要的关系和区别:
创建自己的命名空间是C++中组织代码的一种好方法,特别是在开发大型项目或库时,命名空间可以帮助你避免名称中突,并且清晰的组织代码,std 是C++ 标准库的命名空间。它是一个定义在 C++ 标准库中的所有类、函数和变量的命名空间。
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
在 C++ 中,如果你想使用标准库中的任何类、函数或对象,通常有两种选择:
使用 std::前缀:这是最常见的方式,它明确指定了你正在使用的是位于std 命名空间中的元素。
std::cout << "Hello world!" << std::endl;
使用 using namespace std;:这允许你在不显示指定 std:: 的况下使用 std 命名空间中的所有元素。
using namespace std;
cout << "Hello world!" << endl;
std 命名空间包含许多类、函数和对象,例如:
使用建议:
要求:创建一个命名空间来包含与圆形相关的功能,可以命名这个命名空间为Cir:
#ifndef CIR_H
#define CIR_H
namespace cir{
const double PI = 3.141592653;
double areaOfCircle(double radius){
return PI*radius*radius;
}
double lengthOfCircle(double radius){
return 2*PI*radius;
}
}
#endif // CIR_H
// 使用方法
// 在main.cpp中首先包含定义cirde 命名空间的头文件。然后可以使用cir::前缀来访问命名空间中的函数和常量,通过使用自定义命名空间可以有效的组织代码减少不同库之间的名称冲突。
#include <iostream>
#include <stdio.h>
#include "cir.h"
using namespace std;
using namespace cir;
int main()
{
double myRadius = 5;
cout << "namespace" << endl;
// 使用两种表达方式 printf("length:%lf,area:%lf\n",cir::getLengthOfCircle(myRadius),cir::getAreaOfCircle(myRadius));
printf("length:%lf,area:%lf\n",getLengthOfCircle(myRadius),getAreaOfCircle(myRadius));
return 0;
}
C++ 中的输入和输出(I/O)主要是通过标准库中的输入输出流来实现的。最常用的是 iostream 库,它及供了用于输入和输出的基本流类,包活cin、cout、cerr和c1og。
标准输出流(cout)
标准输入流(cin)
标准错误流(cerr)和标准日志流(c1og)
// c
#include <stdio.h>
int main()
{
int a;
int b;
scanf("%d,%d", &a, &b);
printf("a=%d,b=%d\n", a, b);
printf("%d+%d=%d\n", a, b,a+b);
return 0;
}
// c++
#include <iostream>
using namespace std;
int main()
{
int a;
int b;
cin >> a >> b;
cout << a << ","<< b << endl;
cout << a << "+" << b << "=" << a+b << endl;
return 0;
}
数据类型 | 描述 | 大小(通常情况下) | 用途 |
---|---|---|---|
int | 整形 | 至少16位 | 存储整数 |
short int | 短整型 | 至少16位 | 存储较小的整数 |
long int | 长整型 | 至少32位 | 存储较大的整数 |
long long int | 更长的整型 | 至少64位 | 存储非常大的整数 |
unsigned int | 无符号整型 | 同int | 存储非负整数 |
float | 单精度浮点类型 | 32位 | 存储小数,精度约为6-7位小数 |
double | 双精度浮点类型 | 64位 | 存储小数,精度约为15-16位小数 |
long double | 扩展精度浮点类型 | 80位或更多 | 存储小数,提供比double更高的精度 |
char | 字符型 | 8位 | 存储单个字符或小整数 |
unsigned char | 无符号字符型 | 8位 | 存储较大的字符或作为字节使用 |
signed char | 有符号字符型 | 8位 | 明确作为带符号的字符或小整数使用 |
bool | 布尔型 | 通常为8位 | 存储真值true或假值false C语言C99以上支持 |
wchar_t | 宽字符类型 | 通常为16位或32位 | 存储中文或unicode |
宽字符的用法
// 在QT环境下运行会出错,但在Linux g++编译工具下会成功运行
#include <iostream>
#include <locale>
#include <wchar.h>
int main()
{
// 设置本地化以支持宽字符
std::setlocale(LC_ALL, "");
// 使用 wchar_t 类型定义一个宽字符
wchar_t wstr[] = L"你好,世界!";
// 在C++中打印宽字符
std::cout << wstr << std::endl;
return 0;
}
在C++中(或在C中是 <limits.h>)是一个标准头文件,提供了关于整型限制的信息,这个头文件中定义了各种整型数据类型的属性,如最大值、最小值等。使用这些信息可以帮助了解在特定编译器和平台上各种数据类型的大小和范围。
要使用 中定义的常量,需要包含这个头文件 #include
然后,可以使用它提供的各种常量,例如:
// 输出 int、unsigned int 和 1ong 1ong int 类型的大值和展小值,
#include <iostream>
#include <climits>
int main()
{
std::cout << "The range of int is from " << INT_MIN << " to " << INT_MAX << std::endl;
std::cout << "The maximum value of unsigned int is " << UINT_MAX << std::endl;
std::cout << "The range of long 1ong is from " << LLONG_MIN << " to " << LLONG_MAX << std::endl;
return 0;
}
注意事项: