HelloWorld
#include <iostream>
using namespace std;
int main() {
// 打印
cout << "Hello,World!" << endl;
return 0;
}
c/c++文件和关系
- c++和c是包含关系,c++相当于是c的plus版本
- c++的编译器也可以编译c语言
- c++文件.cpp结尾
- .h为头文件
- .c为c语言文件
关于注释
关于导入
- 导入iostream库,字符串操作需要用到
- 导入库的方法为
#include <库名字>
关于打印
- c的打印为
printf("格式化字符串",变量1,变量2)
- c++ 打印字符串的方法为
std::cout << 内容 << std::endl;
- 因为std是iostream中的方法,假设导入了别的库也有std方法,这样就不知道具体使用的哪个方法了,所以不能省略std
- 使用
using namespace std;
指定了命名空间之后,该文件使用的命名空间都为std,可以省略std
关于main函数
- c/c++的运行入口为main函数 有且必有一个 程序从此开始从上往下运行
关于main函数的return
-
程序最后必须返回一个0告诉计算机我们的程序正常执行完毕
常量
宏常量
常量不可修改
- 宏常量定义完编译的时候是做替换操作,编译时把代码中的a全部替换为宏常量的内容,不会开辟内存
- 语法为
#define 常量名 内容
- 没有等号和分号,不用指定类型
#include <iostream> #define a "我是一个宏常量" using namespace std; int main() { cout << a << endl; return 0; }
const修饰的变量
- const修饰的变量是真实存在于内存的
- 需要指定常量类型
- 语法为
const 类型 变量名=内容;
#include <iostream> using namespace std; const int a = 20; int main() { cout << a << endl; return 0; }
代码里面所有直接使用的字符串和数字都为常量
基本数据类型
有符号和无符号以及溢出的问题
-
c/c++中的整数类型和字符类型可分为
有符号
和无符号
,有符号取值范围内可以有负数,默认有符号,无符号反之没有负数。 -
关键字为:
有符号signed
无符号 unsigned
-
例如short的取值范围为-32768 ~ 32767(默认有符号)2个字节,在c和c++中两个字节用二进制表示为:
-
最低取值范围为:
-
最左边的高位表示为符号位,用来表示该数字是正数还是负数,如果为0则为正数,为1则为负数
-
如果把高位变成1:
-
代码中溢出
-
正常的
#include <iostream> using namespace std; int main() { short a = 32767; cout << a << endl; return 0; }
-
超出1
#include <iostream> using namespace std; int main() { short a = 32768; cout << a << endl; return 0; }
输出的并不是32768
-
-
无符号类型及取值范围
-
无符号类型给负号
#include <iostream> using namespace std; int main() { // 添加了unsigned无符号关键字 默认有符号 unsigned short a = -5461; cout << a << endl; return 0; }
输出的并不是-5461,无符号赋值负数会有不可预期的效果
-
-
因为没有负数,取值范围变成65535
#include <iostream> using namespace std; int main() { unsigned short a = 65535; cout << a << endl; return 0; }
-
超出之后还是有溢出问题
数据类型表格
数据类型 | 类型 | 大小 | 取值 |
---|---|---|---|
整数类型 | int | 4个字节 | -2147483648 ~ 2147483647 |
unsigned int | 4个字节 | 0 ~ 4294967295 | |
short int (可简写为short) | 2个字节 | -32768 ~ 32767 | |
unsigned short | 2个字节 | 0 ~ 65535 | |
long int (可简写为long) | 32位系统4个字节,64位系统8个字节 | - | |
unsigned long | 8个字节 | 以此类推,没有负数 | |
long long | 8个字节 | - | |
unsigned long long | 8个字节 | 以此类推,没有负数 | |
浮点数类型 | float | 4个字节 | ~7个数字 |
double | 8个字节 | ~15个数字 | |
long double | 16个字节 | 提供18~19位有效数字 | |
字符类型 | char | 1个字节 | -128 ~ 127 |
unsigned char | 1个字节 | 0 ~ 255 | |
布尔类型(c语言没有) | bool | 1个字节 | c语言中false为0,其他为true |
c++中有true和false,flase为0,其他为true |
例子
typeid(变量).name()
查看变量类型
#include <iostream>
using namespace std;
int main() {
int a = 10;
short int b = 10;
short b_1 = 10;
long d = 10;
long int d_1 = 10;
long long int e = 10;
long long e_1 = 10;
float f = 1.2;
double g = 1.26;
long double g_1 = 456.65;
char h = 'a';
bool i = true;
bool j = false;
cout << "int:" << a << " 数据类型:" << typeid(a).name() << endl;
cout << "short int:" << b << " 数据类型:" << typeid(b).name() << endl;
cout << "short:" << b_1 << " 数据类型:" << typeid(b_1).name() << endl;
cout << "long:" << d << " 数据类型:" << typeid(d).name() << endl;
cout << "long int:" << d_1 << " 数据类型:" << typeid(d_1).name() << endl;
cout << "long long int:" << e << " 数据类型:" << typeid(e).name() << endl;
cout << "long long:" << e_1 << " 数据类型:" << typeid(e_1).name() << endl;
cout << "float:" << f << " 数据类型:" << typeid(f).name() << endl;
cout << "double:" << g << " 数据类型:" << typeid(g).name() << endl;
cout << "long double:" << g_1 << " 数据类型:" << typeid(g_1).name() << endl;
cout << "char:" << h << " 数据类型:" << typeid(h).name() << endl;
cout << "bool true:" << i << " 数据类型:" << typeid(i).name() << endl;
cout << "bool false:" << j << " 数据类型:" << typeid(j).name() << endl;
return 0;
}