浮点数据输出控制、数据输入问题、string初始化及输入输出、C语言字符串输入输出、C++位运算

目录

1.浮点数据输出控制

2.cin数据输入

3.数据输入错误时

 4.字符串初始化

5.string输入与输出

6.string读取一行

7. C语言字符串输入、输出

8.位运算符

8.1位与运算符 &

8.2位或运算符 |

8.3位非运算符 ~

8.4异或 ^

8.5左移 <<

8.6右移 >>


1.浮点数据输出控制

double value = 12.345678;

//默认情况下,cout输出6位有效数字
cout<<value<<endl;   //12.3456

//可以修改输出精度
cout.precision(4);
cout<<value<<endl;   //12.34

//想要精度表示小数点后面位数
cout.flag(cout.fixed);  //定点法:精度表示小数点后面位数
cout<<value<<endl;   //12.34

cout.unsetf(cout.fixed);  //取消定点法

2.cin数据输入

用户键盘输入数据按下回车后,数据送到输入缓冲区,cin从缓冲区读取;

当缓冲区有数据时,cin直接读取。缓冲区没有数据时,程序会暂停,等待用户输入

3.数据输入错误时

输入数据时,前面数据输入错误,导致后面数据不能输入

int a;
int b;
int c;
cin >> a >> b >> c ;

解决方法:
cout<<”请输入一个整数”<<endl;
cin>>a:
if(cin.fail()){
    cout<<”输入错误,应输入一个整数”<<endl;
    cin.clear();  //清除cin错误标记,使后续输入可以正常进行
    cin.sync();   //但是已经输入数据还在缓冲区,需要清空缓冲区(在VC++、g++中可行在VS中无效)
}

 4.字符串初始化

1.string name1=”aaaa”
2.string name2;
  name2=name1;
3.string name3(“aaaa”);
4.string name4(name3);
5.string name5( 10 , ’A’ );   //等效于string name5 (“AAAAAAAAAA”)

5.string输入与输出

使用std::cin>>输入

从第一个非空白字符开始,直到遇到空白字符停止输入

空白字符☞:空格、指标、回车

string a ;

string b;

//假设用户输入:清华 考古 金融;“金融”则会存留在缓冲区

cin >> a >> b;

6.string读取一行

string addr;
getline(cin ,addr) ;    //读取一行字符串保存到字符串变量addr中

//判断字符串是否为空
if ( addr.empty( ) );    //如果为空则返回true

//计算字符串长度
size( );
length( );

7. C语言字符串输入、输出

char name[16];
chanr addr [64];

printf ( “ 姑娘芳名? \n “ );

//输入    小芳\n   ->输入缓冲区:   小芳\n
scanf (“%s”,name);

printf(“%s姑娘,家住何地 “ , name);

gets(addr) ;    //读取一行,直到遇到回车符

//scanf将小芳读取,缓冲区剩下’\n’,gets(addr)遇到回车符即停止,所以字符addr为空

//清空输入缓冲区
fflush(stdin);   //fflush:刷新\清空   stdin:标准输入设备

8.位运算符

8.1位与运算符 &

位与运算符  &
0&0  0
0&1  0
1&0  0
1&1  1

cout << “8 & 3” << ( 8 & 3 ) << endl ;   //输出0
/*
8     00001000
3     00000011
    &——————
      00000000      -> 0
输出0
*/

8.2位或运算符 |

位或运算符  |
0|0  0
0|1  1
1|0  1
1|1  1

cout << “ 8|1” << (8 | 1 ) << endl;   //输出11
/*
8     00001000
3     00000011
    &——————
      00001011     ->11
输出11
*/

8.3位非运算符 ~

位非运算符 ~
~1  0
~0  1
char a =~8;
cout << int (a)<< endl
/*
8     00001000
    ~——————
      11110111     ->247
输出247
*/

8.4异或 ^

异或^
0^0  0
1^1  0
0^1  1
1^0  1

cout << ( 8 ^ 3 ) << endl; //输出11
/*
8     00001000
3     00000011
    &——————
      00001011      -> 11
输出11
*/

8.5左移 <<

左移运算符 <<

cout << (8 << 1) << endl ;   //输出16
/*
8    00001000
<<  000010000   右边位置用0补上 左边位置超出的直接抛弃
 
n<<m  ->n*2^m
*/
左移运算只适用于:int / short /long /char等定点整数型(float / double 浮点数类型不能使用)

8.6右移 >>

右移运算符>>
向右操作是无符号类型,左边多出位用0填充
有操作是有符号类型,左边多出位用符号位填充
向左移动n个位置,等同于除以2 的n次方

cout << ( 8 >> 1 ) << endl ;     //输出4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值