命名空间的使用
如果是#include<iostream>,需要使用名称空间,using namespace std,而针对于#include<iostream.h> 则不需要使用名称空间,当然,后面这个带.h的头文件一般编译器包含了会使用较新的C++标准,所以会找不到iostream.
#include <iostream>
int main()
{
using namespace std;
cout << "Hello";
return 0;
}
4种使用方法
- 将using namespace std 放到函数定义之前
- 将using namespace std 放到函数定义中
- 使用using std::cout,而不是using namespace std 使用所有名称
- 完全不使用编译指令using,在使用的时候,直接std::cout获取
类型存储大小的限制
对应的类型可存储大小的限制,包含于#include<climits> (整型) #include<cfloat> (浮点型)
#include<climits>
#define CHAR_BIT 8
#define SCHAR_MIN (-128)
#define SCHAR_MAX 127
#define UCHAR_MAX 0xff
#define MB_LEN_MAX 5
#define SHRT_MIN (-32768)
#define SHRT_MAX 32767
#define USHRT_MAX 0xffff
#define INT_MIN (-2147483647 - 1)
#define INT_MAX 2147483647
#define UINT_MAX 0xffffffff
#define LONG_MIN (-2147483647L - 1)
#define LONG_MAX 2147483647L
#define ULONG_MAX 0xffffffffUL
#define LLONG_MAX 9223372036854775807i64
#define LLONG_MIN (-9223372036854775807i64 - 1)
#define ULLONG_MAX 0xffffffffffffffffui64
#include<cfloat>
#define DBL_DECIMAL_DIG 17 // # of decimal digits of rounding precision
#define DBL_DIG 15 // # of decimal digits of precision
#define DBL_EPSILON 2.2204460492503131e-016 // smallest such that 1.0+DBL_EPSILON != 1.0
#define DBL_HAS_SUBNORM 1 // type does support subnormal numbers
#define DBL_MANT_DIG 53 // # of bits in mantissa
#define DBL_MAX 1.7976931348623158e+308 // max value
#define DBL_MAX_10_EXP 308 // max decimal exponent
#define DBL_MAX_EXP 1024 // max binary exponent
#define DBL_MIN 2.2250738585072014e-308 // min positive value
#define DBL_MIN_10_EXP (-307) // min decimal exponent
#define DBL_MIN_EXP (-1021) // min binary exponent
#define _DBL_RADIX 2 // exponent radix
#define DBL_TRUE_MIN 4.9406564584124654e-324 // min positive value
#define FLT_DECIMAL_DIG 9 // # of decimal digits of rounding precision
#define FLT_DIG 6 // # of decimal digits of precision
#define FLT_EPSILON 1.192092896e-07F // smallest such that 1.0+FLT_EPSILON != 1.0
#define FLT_HAS_SUBNORM 1 // type does support subnormal numbers
#define FLT_GUARD 0
#define FLT_MANT_DIG 24 // # of bits in mantissa
#define FLT_MAX 3.402823466e+38F // max value
#define FLT_MAX_10_EXP 38 // max decimal exponent
#define FLT_MAX_EXP 128 // max binary exponent
#define FLT_MIN 1.175494351e-38F // min normalized positive value
#define FLT_MIN_10_EXP (-37) // min decimal exponent
#define FLT_MIN_EXP (-125) // min binary exponent
#define FLT_NORMALIZE 0
#define FLT_RADIX 2 // exponent radix
#define FLT_TRUE_MIN 1.401298464e-45F // min positive value
#define LDBL_DIG DBL_DIG // # of decimal digits of precision
#define LDBL_EPSILON DBL_EPSILON // smallest such that 1.0+LDBL_EPSILON != 1.0
#define LDBL_HAS_SUBNORM DBL_HAS_SUBNORM // type does support subnormal numbers
#define LDBL_MANT_DIG DBL_MANT_DIG // # of bits in mantissa
#define LDBL_MAX DBL_MAX // max value
#define LDBL_MAX_10_EXP DBL_MAX_10_EXP // max decimal exponent
#define LDBL_MAX_EXP DBL_MAX_EXP // max binary exponent
#define LDBL_MIN DBL_MIN // min normalized positive value
#define LDBL_MIN_10_EXP DBL_MIN_10_EXP // min decimal exponent
#define LDBL_MIN_EXP DBL_MIN_EXP // min binary exponent
#define _LDBL_RADIX _DBL_RADIX // exponent radix
#define LDBL_TRUE_MIN DBL_TRUE_MIN // min positive value
运算符 sizeof
确认对应的类型使用多少个字节,对于类型需要加括号,对于变量,括号是可选的
#include<iostream>
#include<climits>
int main()
{
using namespace std;
int n_int = INT_MAX;
short n_short = SHRT_MAX;
long n_long = LONG_MAX;
long long n_llong = LLONG_MAX;
cout << sizeof(int) << endl; // output 4
cout << sizeof n_short << endl; //output 2
cout << sizeof n_long << endl; //output 4
cout << sizeof n_llong << endl; //output 8
return 0;
}
Const 限定符
C++ 定义常量使用const,具体用法是:const int Month=12;相对于C语言的#define有以下优点:
- 指明了常量的类型
- 可以被作用域规则限定,可以把作用域限定在函数里面
- 可以用于更为复杂的类型,比如是数组和结构体
浮点类型的精度
#include <iostream>
int main()
{
using namespace std;
float a = 2.34e+22f;
float b = a + 1.0f;
cout << "a = " << a << endl;
cout << "b - a = " << b - a << endl;
return 0;
}
//output
//a = 2.34e+22
//b - a = 0
由于float类型只能表示数字中的前6位,所以对小数点后的第23位加1,并没有改变这个浮点数
所以相减还是零
强制类型转换运算符 static_cast<>
#include <iostream>
int main()
{
using namespace std;
char ch = 'A';
cout << ch << endl; //A
cout << int(ch) << endl; //65
cout << static_cast<int>(ch) << endl; //65
return 0;
}
auto声明
主要用法
std::vector<double> scores;
std::vector<double>::iterator pv = scores.begin();
//as
std::vector<double> scores;
auto pv = scores.begin();