【学习笔记】C++Study1.输入输出+数据类型

#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;



}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值