浮点数
std::cout << 1.0f << std::endl;//加后缀f或F则类型float
std::cout << 1.0 << std::endl;//无后缀的.0则double
std::cout << 1.0l << std::endl;//l或L后缀则是long double
std::cout << 5e2 << std::endl;//无论e还是E都是表示5.0*10的2次方。具体类型为double,同上三种后缀判断法
ps:因为看到浮点数想起来平时写题会有输出小数几位的需求。
C的printf:
%d
打印十进制整数
%f
: 用于打印浮点数。默认打印6位小数。可以如%.2f
表示打印两位小数。
%c
: 用于打印字符。
%s
: 用于打印字符串。
%x
或 %X
: 用于打印十六进制整数,小写或大写字母表示。
%o
: 用于打印八进制整数。
%%
: 用于打印百分号(%
)本身,因为%
被用作格式说明符,如果要打印实际的百分号,需要用两个百分号。%d
:打印十进制整数
%u
:无符号十进制整数
%f
: 用于打印float浮点数。默认打印6位小数。可以如%.2f
表示打印两位小数。
%lf
:打印double浮点数
%c
: 用于打印字符。
%s
: 用于打印字符串。
%x
或 %X
: 用于打印十六进制整数,小写或大写字母表示。
%o
: 用于打印八进制整数。
%%
: 用于打印百分号(%
)本身,因为%
被用作格式说明符,如果要打印实际的百分号,需要用两个百分号。
0
:用0来补齐,如%05d
会输出4个0加a,05即前补4个0; 00002
+
:会输出数字的符号%+d
输出 +123
std::cout << std::fixed << std::setprecision(3) << myNumber << std::endl;//打印3位小数
字符
字符ASCII码:
十进制 | 常见字符 |
---|---|
48~57 | ‘0’~‘9’ |
65~90 | ‘A’~‘Z’ |
97~122 | ‘a’~‘z’ |
10 | 换行键 |
#include<locale>//简单了解
int main(){
setlocale(LC_ALL,"chs");
wchar_t ch = L'我';//wchar_t ch {L'我'};
std::wcout<<ch<<std::endl;
}//宽字节字符wchar_t显示中文
//char16_t
//char32_t
//char8_t utf-8标准最新的
auto a = U'A';//推导类型
auto b = u'A';
auto c = L'A';
cout << typeid(a).name() << endl;//输出类型名
cout << typeid(a).name() << endl;
cout << typeid(c).name() << endl;
类型转换
C | C++ | |
---|---|---|
int a = int(b); | int a = static_cast<int>(b); | |
目标类型(目标变量) | static_cast<目标类型>(目标变量); |
发送运算过的类型转换规则。即靠向类型较高的
类型转换顺序表 |
---|
long double |
double |
float |
unsigned long long |
long long |
unsigned long |
long |
unsigned int |
int |
int a = 5;
unsigned b = 10;
std::cout << a - b << (char)10;//输出如下图,为什么不是-5呢?
为什么结果不是-5呢?因为如果两个不相同类型数据计算, 是要通过类型转换顺序表的等级靠向等级高的,如int和unsigned类型计算,int类型低于后者,所以计算结果为unsigned类型数据,即结果要遵循unsigned类型规则解释数据