#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
//precision精度(整数+小数点位数):[声明iomanip cout<<setprecision(位数)<<输出内容;] [cout.precision(位数);cout<<输出内容;] 【对整个函数生效
cout << "setprecision精度输出" << setprecision(6) << 100.123456789 << "\n";
//cout.precision整个函数小数保留生效
cout.precision(8);
cout << "cout.precision精度输出" << 100.123456789 << endl;
//[声明iomanip setiosflags(ios::fixed) 位数控制仅对小数生效] 【对整个函数生效
cout << setiosflags(ios::fixed) << setprecision(10) << "setiosflags(ios::fixed) 位数控制仅对小数生效" << 100.123456789 << endl;
//[声明iomanip setw(总字符长度) 包含输出值在内的空字符长度 类空格 方便对齐] 【对当前语句生效
//[声明iomanip setiosflags(ios::left) left or right在使用setw函数时使输出值靠左或右对齐] 【对整个函数生效
//[声明iomanip resetiosflags(ios::left) 取消靠左 or 右对齐 回到上一次的对齐方式] 【对整个函数生效
cout << setiosflags(ios::left);
cout << "按setw(10)靠左对齐=" << setw(10) << 1234 << setw(10) << 111 << endl;
cout << resetiosflags(ios::left);
cout << "取消按setw(10)靠左对齐=" << setw(10) << 1234 << setw(10) << 111 << endl;
//[声明iomanip setbase(8)将输出格式转化为8、10、16进制] 【对整个函数生效
cout << setbase(8) << "八进制转化1=" << 17 << endl;
cout << setbase(10) << "十进制转化1=" << 17 << endl;
cout << setbase(16) << "十六进制转化1=" << 79 << endl;
//[oct八进制输出 dec十进制输出 hex十六进制输出] 【对整个函数生效
cout << oct << "八进制转化2=" << 17 << endl;
cout << dec << "十进制转化2=" << 17 << endl;
cout << hex << "十六进制转化2=" << 79 << endl;
cout << dec;
//短整型(2byte)2^16 short[-32768,32767] 无符号unsigned short[0,65535]
//整形(4byte)2^32 int[-2147483648,2147483647] 无符号unsigned int[0,4294967295] 长整形long 无符号unsigned long
//单精度浮点型(4byte)2^128 float
//双精度浮点型(8byte) double
//字符型 2^8 char[-128,127] 无符号unsigned char[0,255] 复制单引号
//宽字符型wchar_t 赋值单引号+L
// 字符串型 string 需声明iostream
//布尔型 Bool[0,1]
//枚举型 enum 数据类型名{合法值1,...,合法值x}
enum stage { low, mid, high };
string a = "asaf";
cout << a;
bool b = true;
cout << "输出布尔值b=" << b << endl;
cout << "输出布尔值b+72=" << b + 72 << endl;
//生命自定义数据类型stage的变量名
stage myValue1 = low, myValue2 = mid, myValue3 = high;
cout << "自定义枚举数据类型第1个值=" << myValue1 << endl;
cout << "自定义枚举数据类型第2个值=" << myValue2 << endl;
cout << "自定义枚举数据类型第3个值=" << myValue3 << endl;
string str1 = "哈哈cnm", str2 = "nmsl", str3 = str1 + str2;
// +号链接字符
cout << "+号链接字符=" << str3 << endl;
// 字符串变量名[字符位置] :单个字符串下标访问,不可访问汉字。连续输出两次字符可访问单个汉字。
cout << "下标访问str3[0]和[1]=" << str3[0] << str3[1] << endl;
//配置地域本地化信息setlocale(LC_ALL,"简体中文简写CHS") LC_ALL 包括下面的全部选项都要。 LC_COLLATE 配置字符串比较,PHP 尚未实作出来本项。 LC_CTYPE 配置字符类别及转换。例如全变大写 strtoupper()。 LC_MONETARY 配置金融货币,PHP 尚未实作。 LC_NUMERIC 配置小数点后的位数。 LC_TIME 配置时间日期格式,与 strftime() 合用。 而参数 locale 若是空字符串 "",则会使用系统环境变量的 locale 。若 locale 为零(NULL),则不会改变地域化配置,返回当前的地域值,若系统尚未实作则返回 false。
setlocale(LC_ALL, "chs");
//宽字符赋值左侧加L
wchar_t cn1 = L'草', cn2 = L'妈';
//printf输出 字符串型%s 字符型%c 宽字符型%wc 整型%d 长整型%ld 浮点数%f
printf("%s%wc%wc","宽字符cn1+cn2=", cn1, cn2);
//恢复初始设置locale C 无输出
setlocale(LC_ALL, "C");
printf("%wc%wc\n", cn1, cn2);
//基本运算
int mathA = 5, mathB = 3;
cout << "+运算=" << mathA + mathB << endl;
cout << "-运算=" << mathA - mathB << endl;
cout << "*运算=" << mathA * mathB << endl;
//(float)转换int类型为float,运算中同时存在float与int型时,运算结果以float型优先,如果运算均为int型不转float,则运算结果不会显示小数
cout << "/运算转float=" << mathA / mathB << endl;
//取余运算 %
cout << "取余运算" << mathA % mathB << endl;
// +=加等 -=减等 *= /=,%=
mathA += mathB;
cout << "加等=" << mathA << endl;
mathA -= mathB;
cout << "减等=" << mathA << endl;
mathA *= mathB;
cout << "乘等=" << mathA << endl;
mathA /= mathB;
cout << "除等=" << mathA << endl;
mathA %= mathB;
cout << "摩等余数=" << mathA << endl;
//++自加运算 --自减运算 (运算符在后,先运算再赋值给自身。运算符在前,先赋值给自身再运算) 在后: x = y++ = x=y than y=y+1 在前:x = ++y = y=y+1 Than x=y
mathB = mathA++;
cout << "自加在后" << mathB << endl;
mathB = ++mathA;
cout << "自加在前" << mathB << endl;
mathB = mathA--;
cout << "自减在后" << mathB << endl;
mathB = --mathA;
cout << "自减在前" << mathB << endl;
//操作系统位数为int值的二进制最大位数,例如32位操作系统二进制最大值位32个1位二进制数,约等于十进制4294967295个数(包含0)
//位bit 二进制中,每个二进制值视为1位,例如10110为5个位。
//位运算符: 位右移>> 将数值转化为二进制,整个数值向右移动指定位数,舍弃最右边的第一位。
//位左移<< 数值转化为二进制,整个数值向左移动指定位数,最右侧添加指定位数个0。
//位与& 将两个数值转化为二进制进行计算,相同位数同为1的情况下保留1,有1个数为0的情况下保留0.(位数相同情况下约等于取最小数)
//位或运算| 将两个数值转化为二进制进行计算,相同位数同为0的情况下保留0,有1个数为1的情况下保留1.(位数相同情况下约等于取最大数)
//位异或运算^ 将两个数值转化为二进制进行计算,相同位数不同的情况下为1,相同位数相同的情况下为0.
//取反运算符~ 将数值转化为二进制,1变0 0变1.
int wysA = 10, wysB;
wysB = wysA >> 1;
cout << "位运算右移=" << wysB << endl;
wysB = wysA << 1;
printf("%s%d\n", "位运算右移=", wysB);
//使用()让运算优先级大于cout<<优先级
cout << "位与运算3=11 5=101 = " << (3 & 5) << endl;
printf("%s%d\n", "位或运算56=111000 63=111111 = ", (56 | 63));
cout << "位异或运算56=111000 63=111111 = " << (56 ^ 63) << endl;
printf("%s%d\n", "取反运算=", ~9);
//常量声明const 数据类型
const double constA = 3.1415926;
cout << "保留小数输出常量=" << setiosflags(ios::fixed) << setprecision(10) << constA << endl;
}
【学习笔记】C++Study1.输入输出+数据类型
于 2022-08-14 02:31:35 首次发布